파이썬 bool() 함수란?
파이썬의 내장 함수 bool()은 인자로 전달된 값을 평가하여 그에 해당하는 불리언(Boolean) 값, 즉 True 또는 False를 반환합니다. 숫자, 문자열, 리스트, 딕셔너리, 비교 표현식 등 어떤 객체든 인자로 넘길 수 있으며, 그 결과는 아래의 규칙에 따라 결정됩니다.
다음에서 언급하는 값들을 제외한 나머지 모든 값은 True를 반환합니다.
False를 반환하는 경우
- None
- 거짓(False)으로 평가되는 조건식
- 숫자 타입의 영(0) — 0, 0.0, 0j 등 모든 숫자형에 해당
- 빈 시퀀스 — (), [], '' 등
- 빈 매핑 — {} 등
- __bool__() 또는 __len__() 메서드가 0 또는 False를 반환하도록 정의된 클래스의 객체
예제 코드
아래 프로그램은 위에서 소개한 다양한 시나리오를 모두 보여줍니다.
print("None gives : ", bool(None))
print("True gives : ", bool(True))
print("Zero gives: ", bool(0))
# 거짓으로 평가되는 표현식 (0 == 6.0 → False)
print("Expression evaluating to False: ", bool(0 == (18/3)))
# 참으로 평가되는 표현식 (0 == 0 → True)
print("Expression evaluating to True: ", bool(0 == (18%3)))
s = ()
print("An empty sequence: ", bool(s))
m = {}
print("An empty mapping: ", bool(m))
t = 'Tutorialspoint'
print("A non-empty string: ", bool(t))
실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
None gives : False True gives : True Zero gives: False Expression evaluating to False: False Expression evaluating to True: True An empty sequence: False An empty mapping: False A non-empty string: True
결과 해설
bool(None), bool(0), 빈 튜플 (), 빈 딕셔너리 {}는 각각 None, 영(0), 빈 시퀀스, 빈 매핑에 해당하므로 False를 반환합니다. 반면 bool(True)는 당연히 True이며, 'Tutorialspoint'처럼 비어 있지 않은 문자열은 항상 True로 평가됩니다.
표현식 부분을 살펴보면, 18 / 3은 6.0이므로 0 == 6.0은 거짓이 되어 False가 반환되고, 18 % 3은 0이므로 0 == 0은 참이 되어 True가 반환됩니다.
bool() 함수의 실전 활용
사실 파이썬에서는 if 문과 같은 조건문에서 이미 암묵적으로 진릿값 변환이 일어나기 때문에, bool() 함수는 주로 값의 진릿값을 명시적으로 확인하고 싶을 때 유용합니다. 예를 들어 리스트에 요소가 존재하는지 검사할 때 bool(my_list)처럼 활용할 수 있으며, 데이터 유효성 검사나 필터링 로직에서도 깔끔하게 사용할 수 있습니다.