파이썬에서는 True·False 외의 값들도 조건문에서 「참」 또는 「거짓」으로 자동 평가됩니다.
이 평가 규칙을 「Truthy(참 같은)·Falsy(거짓 같은)」라 부르며, 조건문을 더 간결하게 쓰게 해 주는 중요한 특성입니다.
Falsy로 평가되는 값들: False, None, 0, 0.0, 빈 문자열 "", 빈 리스트 [], 빈 튜플 (), 빈 딕셔너리 {}, 빈 집합 set().
즉 「숫자 0과 비어 있는 모든 컬렉션」이 Falsy입니다.
그 외의 거의 모든 값은 Truthy입니다.
이 특성 덕분에 다음과 같은 영리한 코드가 가능합니다.
if my_list: — 「리스트가 비어 있지 않으면」.
if name: — 「이름이 빈 문자열이 아니면」.
다른 언어에서 「if len(my_list) > 0:」이라 길게 써야 하는 일을 한 단어로 표현합니다.
비유하자면 파이썬의 진실값은 「있으면 참, 없으면 거짓」이라는 직관적 규칙과 같습니다.
빈 손은 거짓, 무언가 들고 있는 손은 참 — 이 직관을 코드로 옮긴 것이 Truthy·Falsy입니다.
주의할 점은 「Truthy != True」, 「Falsy != False」라는 것입니다.
"hello"는 Truthy이지만 "hello" == True는 False입니다.
명시적 비교가 필요할 때는 「if x is True」를 쓰지만, 보통은 「if x:」로 충분합니다.
또 「is None」으로 None 검사하는 것이 「== None」보다 PEP 8 권장입니다.
한 줄 요약
파이썬은 0, 빈 컬렉션, None을 Falsy로, 그 외 모든 값을 Truthy로 자동 평가합니다.
「if my_list:」 같은 간결한 표현이 가능하며, == 대신 is로 비교하는 것이 권장됩니다.
더 알아볼 것
- __bool__ 메서드 — 클래스의 진실값 정의
- or과 and의 단축 평가
- 빈 컬렉션 체크의 PEP 8 권장 방식