파이썬에서 or와 |는 어떻게 다를까?
파이썬에서 or는 논리 연산자(logical operator)이고, |는 비트 연산자(bitwise operator)입니다. 두 연산자는 이름은 비슷해 보이지만 동작 방식과 용도가 완전히 다르므로, 정확한 차이를 이해하고 사용하는 것이 중요합니다.
1. 논리 연산자 or
or 연산자는 두 개의 피연산자(타입 제한 없음)를 받아 참(True) 또는 거짓(False)을 판단합니다. 피연산자 중 하나라도 참으로 평가되면 결과는 True가 되고, 모두 거짓일 때만 False를 반환합니다.
>>> a = 50 >>> b = 25 >>> a > 40 or b > 40 True >>> a > 100 or b < 50 True >>> a == 0 or b == 0 False >>> a > 0 or b > 0 True
위 예제에서 확인할 수 있듯이, 여러 조건식 중 단 하나만 참이어도 전체 결과가 True로 반환됩니다. 예를 들어 a > 100 or b < 50은 첫 번째 조건은 거짓이지만 두 번째 조건이 참이므로 True가 됩니다.
2. 비트 연산자 |
| 연산자는 숫자를 이진수 비트 단위로 처리합니다. 각 비트 자리에서 피연산자 중 하나라도 1이면 해당 자리의 결과는 1이 됩니다.
>>> a = 10 # 0000 1010 >>> bin(a) '0b1010' >>> b = 20 # 0001 0100 >>> bin(b) '0b10100' >>> c = a | b >>> c 30 # 0001 1110 >>> bin(c) '0b11110'
10(0b1010)과 20(0b10100)을 비트 OR 연산하면 30(0b11110)이 됩니다. 각 비트 자리를 세로로 비교해 보면, 어느 한쪽이라도 1인 자리는 모두 1로 계산된 것을 알 수 있습니다.
핵심 요약
논리 연산자 or는 조건식의 참/거짓을 판단할 때 사용하고, 비트 연산자 |는 정수의 이진수 표현을 비트별로 연산할 때 사용합니다. 조건 분기에는 or, 플래그나 마스크 처리 같은 저수준 비트 조작에는 |를 사용하는 것이 올바른 활용법입니다.