연산자와 그에 대응되는 함수
다음은 파이썬 문법의 연산자 기호와 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 |