연산자와 그에 대응되는 함수
다음은 파이썬 문법의 연산자 기호와 operator 모듈의 함수의 대응 관계이다.
연산 | 문법 | 함수 |
---|---|---|
더하기(Addition) | a + b |
add(a, b) |
이어붙이기(Concatenation) | seq1 + seq2 |
concat(seq1, seq2) |
포함 검사(Containment Test) | obj in seq |
contains(seq, obj) |
나누기(Division) | a / b |
truediv(a, b) |
나누기(Division) | a // b |
floordiv(a, b) |
비트별 논리곱(Bitwise And) | a & b |
and_(a, b) |
비트별 배타적 논리합(Bitwise Exclusive Or) | a ^ b |
xor(a, b) |
비트별 반전(Bitwise Inversion) | ~ a |
invert(a) |
비트별 논리합(Bitwise Or) | `a | b` |
거듭제곱(Exponentiation) | a ** b |
pow(a, b) |
아이덴티티(Identity) | a is b |
is_(a, b) |
아이덴티티(Identity) | a is not b |
is_not(a, b) |
인덱싱된 대입(Indexed Assignment) | obj[k] = v |
setitem(obj, k, v) |
인덱싱된 삭제(Indexed Deletion) | del obj[k] |
delitem(obj, k) |
인덱싱(Indexing) | obj[k] |
getitem(obj, k) |
왼쪽으로 시프트(Left Shift) | a << b |
lshift(a, b) |
모듈로(Modulo) | a % b |
mod(a, b) |
곱하기(Multiplication) | a * b |
mul(a, b) |
행렬 곱하기(Matrix Multiplication) | a @ b |
matmul(a, b) |
부정 (산술)(Negation (Arithmetic)) | - a |
neg(a) |
부정 (논리)(Negation (Logical)) | not a |
not_(a) |
양(Positive) | + a |
pos(a) |
오른쪽으로 시프트(Right Shift) | a >> b |
rshift(a, b) |
슬라이스 대입(Slice Assignment) | seq[i:j] = values |
setitem(seq, slice(i, j), values) |
슬라이스 삭제(Slice Deletion) | del seq[i:j] |
delitem(seq, slice(i, j)) |
슬라이싱(Slicing) | seq[i:j] |
getitem(seq, slice(i, j)) |
문자열 포매팅(String Formatting) | s % obj |
mod(s, obj) |
빼기(Subtraction) | a - b |
sub(a, b) |
진릿값 검사(Truth Test) | obj |
truth(obj) |
대소비교(Ordering) | a < b |
lt(a, b) |
대소비교(Ordering) | a <= b |
le(a, b) |
동등성(Equality) | a == b |
eq(a, b) |
다름(Difference) | a != b |
ne(a, b) |
대소비교(Ordering) | a >= b |
ge(a, b) |
대소비교(Ordering) | a > b |
gt(a, b) |
제자리 연산자
많은 연산에는 《제자리(in-place)》 버전이 있습니다. 아래에 나열된 것들은 일반적인 문법보다 제자리 연산자에 대한 더 기본적인 액세스를 제공하는 함수입니다; 예를 들어, 문장 x += y
는 x = operator.iadd(x, y)
와 동등합니다. 또 다른 식으로는, z = operator.iadd(x, y)
가 복합문 z = x; z += y
와 동등하다고 말하는 것입니다.
이 예제들에서, 제자리 메서드가 호출될 때, 계산과 대입이 두 개의 분리된 단계에서 수행된다는 점에 유의하십시오. 아래 나열된 제자리 함수는 제자리 메서드를 호출하는 첫 번째 단계만 수행합니다. 두 번째 단계인 대입은 처리되지 않습니다.
문자열, 숫자 및 튜플과 같은 불변 대상의 경우, 갱신된 값이 계산되지만, 입력 변수에 다시 할당되지 않습니다:
>>>
>>> a = 'hello'
>>> iadd(a, ' world')
'hello world'
>>> a
'hello'
리스트와 딕셔너리 같은 가변 대상의 경우, 제자리 메서드가 갱신을 수행하므로, 이후 대입이 필요하지 않습니다:
>>>
>>> s = ['h', 'e', 'l', 'l', 'o']
>>> iadd(s, [' ', 'w', 'o', 'r', 'l', 'd'])
['h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd']
>>> s
['h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd']
-
operator.``iadd
(a, b) -
operator.``__iadd__
(a, b)a = iadd(a, b)
는a += b
와 동등합니다. -
operator.``iand
(a, b) -
operator.``__iand__
(a, b)a = iand(a, b)
는a &= b
와 동등합니다. -
operator.``iconcat
(a, b) -
operator.``__iconcat__
(a, b)a와 b 시퀀스에 대해,
a = iconcat(a, b)
는a += b
와 동등합니다. -
operator.``ifloordiv
(a, b) -
operator.``__ifloordiv__
(a, b)a = ifloordiv(a, b)
는a //= b
와 동등합니다. -
operator.``ilshift
(a, b) -
operator.``__ilshift__
(a, b)a = ilshift(a, b)
는a <<= b
와 동등합니다. -
operator.``imod
(a, b) -
operator.``__imod__
(a, b)a = imod(a, b)
는a %= b
와 동등합니다. -
operator.``imul
(a, b) -
operator.``__imul__
(a, b)a = imul(a, b)
는a *= b
와 동등합니다. -
operator.``imatmul
(a, b) -
operator.``__imatmul__
(a, b)a = imatmul(a, b)
는a @= b
와 동등합니다.버전 3.5에 추가. -
operator.``ior
(a, b) -
operator.``__ior__
(a, b)a = ior(a, b)
는a |= b
와 동등합니다. -
operator.``ipow
(a, b) -
operator.``__ipow__
(a, b)a = ipow(a, b)
는a **= b
와 동등합니다. -
operator.``irshift
(a, b) -
operator.``__irshift__
(a, b)a = irshift(a, b)
는a >>= b
와 동등합니다. -
operator.``isub
(a, b) -
operator.``__isub__
(a, b)a = isub(a, b)
는a -= b
와 동등합니다. -
operator.``itruediv
(a, b) -
operator.``__itruediv__
(a, b)a = itruediv(a, b)
는a /= b
와 동등합니다. -
operator.``ixor
(a, b) -
operator.``__ixor__
(a, b)a = ixor(a, b)
는a ^= b
와 동등합니다.
'Python > Basic programming' 카테고리의 다른 글
보수 개념과 파이썬 `~x` 연산 (Bitwise reversion) (0) | 2020.03.15 |
---|---|
파이썬 비트 연산자 (Bitwise Operators) (0) | 2020.03.15 |
문자열과 관련된 함수들 (0) | 2020.03.12 |
리스트 한 줄에 출력하기 (0) | 2020.03.12 |
여러가지 formatting 방법 적용 예제 (0) | 2020.03.11 |