[Python] 연산자

Yujin·2023년 7월 18일
0
post-thumbnail

복합 연산자

연산과 할당이 함께 이루어짐

기호
+=a += ba = a + b
-=a -= ba = a - b
*=a *= ba = a * b
/=a /= ba = a / b
//=a //= ba = a // b
%=a %= ba = a % b
**==a **= ba = a ** b

비교 연산자

기호내용
==같음
!=같지 않음
is같음
is not같지 않음
  • ==, !=는 값을, is는 메모리 내에서 같은 객체를 참조하는지(같은 주소를 참조하는지) 여부
a = 10
b = 10
print(a is b) # True

c = [1, 2, 3]
d = [1, 2, 3]
print(c == d) # True
print(c is d) # False (c와 d는 각각 다른 주소값을 가지기 때문)

e = [1, 2, 3]
f = e
print(e is f) # True

논리 연산자

  • and : 두 피연산자 모두 True일 경우에만 True
    	
    print(True and True) # True
    print(1 and 1) # 1
    print(True and False) # False
    print(5 == 5 and True) # True
    print(5 == 1 and True) # False
  • or : 두 피연산자 중 하나라도 True일 경우 True
    print(1 == 2 or True) # True
  • not : 단일 피연산자를 부정 (True → False, False → True)
    
    print(5 == 1) # False
    print(not(5 == 1)) # True # 괄호 명확히 표기
    print(not(True)) # False
    print(not 0) # True

단축 평가

  • 논리 연산에서 두 번째 피연산자를 평가하지 않고 결과를 결정하는 동작
  • 코드 실행 최적화, 불필요한 연산 피함
  • and
    • 첫 번째 피연산자가 False인 경우 전체 표현식은 False로 결정. 두 번째 피연산자는 평가되지 않고 그 값은 무시
    • 첫 번째 피연산자가 Ture인 경우 전체 표현식은 두 번재 피연산자에 의해 결정. 두 번째 피연산자가 평가되고 그 결과가 전체 표현식의 결과로 반환
  • or
    • 첫 번째 피연산자가 True인 경우 전체 표현식은 True로 결정. 두 번재 피연산자는 평가되지 않고 그 값이 무시됨
    • 첫 번째 피연산자가 False인 경우 전체 표현식의 결과는 두 번째 피연산자에 의해 결정. 두 번째 피연산자가 평가되고 그 결과가 전체 표현식의 결과로 반환
vowels = 'aeiou'

print(('a' and 'b') in vowels) # False
print(('b' and 'a') in vowels) # True

print(3 and 5) # 5
print(3 and 0) # 0
print(0 and 3) # 0
print(0 and 0) # 0

print(5 or 3) # 5
print(3 or 0) # 3
print(0 or 3) # 3
print(0 or 0) # 0

멤버십 연산자

특정 값이 시퀀스나 다른 컬렉션에 속하는지 여부 확인

  • in : 왼쪽 피연산자가 오른쪽 피연산자의 시퀀스에 속하는지 확인
  • not in : 왼쪽 피연산자가 오른쪽 피연산자의 시퀀스에 속하지 않는지를 확인
word = 'hello'
numbers = [1, 2, 3, 4, 5]

print('h' in word) # True
print('z' in word) # False

print(4 not in numbers) # False
print(6 not in numbers) # True

시퀀스형 연산자

  • +와 *는 시퀀스 간 연산에서 산술 연산자일 때와 다른 역할을 가짐
  • + : 결합 연산자
  • * : 반복 연산자
print('Yujin' + '  Lee') # Yujin  Lee
print('Yujin' + ' Lee') # Yujin Lee

print('hi' * 5) # hihihihihi

print([1, 2] + ['a', 'b']) # [1, 2, 'a', 'b']

print([1, 2] * 2) # [1, 2, 1, 2]

연산자 우선순위

우선 순위연산자내용
높음()소괄호 grouping
[]인덱싱, 슬라이싱
**거듭제곱
+, -단항 연산자 (양수, 음수 부호)
*, /, //, %산술 연산자
+, -산술 연산자
<, <=, >, >=, ==, !=비교 연산자
is, is not객체 비교
in, not in멤버십 연산자
not논리 부정
and논리 AND
낮음or논리 OR

1개의 댓글

comment-user-thumbnail
2023년 7월 18일

정말 좋은 정보 감사합니다!

답글 달기