복합 연산자
연산과 할당이 함께 이루어짐
기호 | | |
---|
+= | a += b | a = a + b |
-= | a -= b | a = a - b |
*= | a *= b | a = a * b |
/= | a /= b | a = a / b |
//= | a //= b | a = a // b |
%= | a %= b | a = a % b |
**== | a **= b | a = a ** b |
비교 연산자
기호 | 내용 |
---|
== | 같음 |
!= | 같지 않음 |
is | 같음 |
is not | 같지 않음 |
- ==, !=는 값을, is는 메모리 내에서 같은 객체를 참조하는지(같은 주소를 참조하는지) 여부
a = 10
b = 10
print(a is b)
c = [1, 2, 3]
d = [1, 2, 3]
print(c == d)
print(c is d)
e = [1, 2, 3]
f = e
print(e is f)
논리 연산자
단축 평가
- 논리 연산에서 두 번째 피연산자를 평가하지 않고 결과를 결정하는 동작
- 코드 실행 최적화, 불필요한 연산 피함
- and
- 첫 번째 피연산자가 False인 경우 전체 표현식은 False로 결정. 두 번째 피연산자는 평가되지 않고 그 값은 무시
- 첫 번째 피연산자가 Ture인 경우 전체 표현식은 두 번재 피연산자에 의해 결정. 두 번째 피연산자가 평가되고 그 결과가 전체 표현식의 결과로 반환
- or
- 첫 번째 피연산자가 True인 경우 전체 표현식은 True로 결정. 두 번재 피연산자는 평가되지 않고 그 값이 무시됨
- 첫 번째 피연산자가 False인 경우 전체 표현식의 결과는 두 번째 피연산자에 의해 결정. 두 번째 피연산자가 평가되고 그 결과가 전체 표현식의 결과로 반환
vowels = 'aeiou'
print(('a' and 'b') in vowels)
print(('b' and 'a') in vowels)
print(3 and 5)
print(3 and 0)
print(0 and 3)
print(0 and 0)
print(5 or 3)
print(3 or 0)
print(0 or 3)
print(0 or 0)
멤버십 연산자
특정 값이 시퀀스나 다른 컬렉션에 속하는지 여부 확인
- in : 왼쪽 피연산자가 오른쪽 피연산자의 시퀀스에 속하는지 확인
- not in : 왼쪽 피연산자가 오른쪽 피연산자의 시퀀스에 속하지 않는지를 확인
word = 'hello'
numbers = [1, 2, 3, 4, 5]
print('h' in word)
print('z' in word)
print(4 not in numbers)
print(6 not in numbers)
시퀀스형 연산자
- +와 *는 시퀀스 간 연산에서 산술 연산자일 때와 다른 역할을 가짐
+
: 결합 연산자
*
: 반복 연산자
print('Yujin' + ' Lee')
print('Yujin' + ' Lee')
print('hi' * 5)
print([1, 2] + ['a', 'b'])
print([1, 2] * 2)
연산자 우선순위
우선 순위 | 연산자 | 내용 |
---|
높음 | () | 소괄호 grouping |
| [] | 인덱싱, 슬라이싱 |
| ** | 거듭제곱 |
| +, - | 단항 연산자 (양수, 음수 부호) |
| *, /, //, % | 산술 연산자 |
| +, - | 산술 연산자 |
| <, <=, >, >=, ==, != | 비교 연산자 |
| is, is not | 객체 비교 |
| in, not in | 멤버십 연산자 |
| not | 논리 부정 |
| and | 논리 AND |
낮음 | or | 논리 OR |
정말 좋은 정보 감사합니다!