oror은 기본적으로 논리 연산자입니다. 두 값 중 하나라도 True면 True를 반환합니다.
True or True # → True
True or False # → True
False or True # → True
False or False # → False
or의 진짜 동작 방식Python의 or은 단순히 True/False를 반환하는 게 아닙니다. 실제 값 자체를 반환합니다.
왼쪽이 truthy하면 왼쪽을 반환, falsy하면 오른쪽을 반환
"hello" or "world" # → "hello" (왼쪽이 truthy → 왼쪽 반환)
"" or "world" # → "world" (왼쪽이 falsy → 오른쪽 반환)
None or "world" # → "world" (왼쪽이 falsy → 오른쪽 반환)
0 or "world" # → "world" (왼쪽이 falsy → 오른쪽 반환)
Python에서 False로 취급되는 값들입니다.
None # 없음
"" # 빈 문자열
0 # 숫자 0
[] # 빈 리스트
{} # 빈 딕셔너리
False # False
이 외의 값들은 전부 truthy합니다.
or의 가장 많이 쓰이는 패턴입니다. "값이 없으면 기본값을 써라" 라는 의미로 사용합니다.
cell or ""
# "cell에 값이 있으면 cell을, 없으면(None이면) 빈 문자열을 써라"
if/else로 풀어쓰면 이것과 동일합니다.
# or 방식
cell or ""
# if/else 방식
cell if cell else ""
결과는 같지만 or이 훨씬 간결합니다.
# None 대신 빈 문자열
name = None
print(name or "이름 없음") # → "이름 없음"
# 빈 리스트 대신 기본 리스트
items = []
print(items or ["기본값"]) # → ["기본값"]
# 0 대신 기본값
count = 0
print(count or 10) # → 10
and와 비교or과 반대로 and는 왼쪽이 falsy하면 왼쪽을 반환, truthy하면 오른쪽을 반환합니다.
# or — 왼쪽이 falsy하면 오른쪽
None or "기본값" # → "기본값"
"값" or "기본값" # → "값"
# and — 왼쪽이 truthy하면 오른쪽
None and "기본값" # → None
"값" and "기본값" # → "기본값"
| 상황 | 결과 |
|---|---|
truthy or anything | 왼쪽 반환 |
falsy or anything | 오른쪽 반환 |
| falsy한 값 |
|---|
None, "", 0, [], {}, False |
한 줄 요약: Python의
or은True/False를 반환하는 것이 아니라 실제 값 자체를 반환하며,값 or 기본값패턴으로 None이나 빈 값을 대체할 때 자주 사용합니다.
참고)
| 값 | or 결과 | and 결과 |
|---|---|---|
truthy or truthy | 왼쪽 반환 | 오른쪽 반환 |
truthy or falsy | 왼쪽 반환 | 오른쪽 반환 |
falsy or truthy | 오른쪽 반환 | 왼쪽 반환 |
falsy or falsy | 오른쪽 반환 | 왼쪽 반환 |
예시로 보면:
| 코드 | 결과 |
|---|---|
"a" or "b" | "a" |
"a" or None | "a" |
None or "b" | "b" |
None or None | None |
"a" and "b" | "b" |
"a" and None | None |
None and "b" | None |
None and None | None |
핵심 규칙:
or → 첫 번째 truthy 값 반환, 없으면 마지막 값and → 첫 번째 falsy 값 반환, 없으면 마지막 값