[Python] Boolean 자료형

 

동빈나 채널의 파이썬 문법 부수기 유튜브 강의를 참고하여 정리한 내용이다.

 

파이썬의 불리언(Boolean) 자료형은 참(True)과 거짓(False) 두 값만 갖는다.

단순해 보이지만 파이썬에서는 int의 서브클래스라는 특성 때문에 다른 언어와 다르게 동작하는 부분이 있어 정리해둔다.

 


 

기본 사용

a = True
b = False

print(type(a))  # <class 'bool'>
print(a, b)     # True False

 

파이썬에서 TrueFalse는 반드시 첫 글자를 대문자로 써야 한다.

true, false는 변수명으로 취급되어 NameError가 발생한다.

print(true)   # NameError: name 'true' is not defined
print(false)  # NameError: name 'false' is not defined

 


 

bool은 int의 서브클래스

파이썬의 boolint를 상속한다. True1, False0과 동일하게 동작한다.

print(True == 1)   # True
print(False == 0)  # True
print(True + True) # 2
print(True * 5)    # 5
print(False + 1)   # 1

이 특성 덕분에 코딩테스트에서 조건을 만족하는 원소 개수를 셀 때 유용하게 쓸 수 있다.

nums = [1, -2, 3, -4, 5]
positive_count = sum(x > 0 for x in nums)
print(positive_count)  # 3

x > 0True 또는 False를 반환하고, sum()이 이를 1과 0으로 더한다.

 


 

bool() 함수

임의의 값을 bool()로 변환할 수 있다.

print(bool(0))     # False
print(bool(1))     # True
print(bool(-1))    # True
print(bool(""))    # False
print(bool("hi"))  # True
print(bool([]))    # False
print(bool([1]))   # True
print(bool(None))  # False

 


 

Truthy / Falsy

파이썬에서 False로 평가되는 값들이다.

설명
False 불리언 False
0 정수 0
0.0 실수 0.0
"" 빈 문자열
[] 빈 리스트
() 빈 튜플
{} 빈 딕셔너리
set() 빈 집합
None None

 

이 외의 값은 모두 True로 평가된다.

코딩테스트에서 리스트가 비어있는지 확인할 때 len(a) == 0 대신 not a를 쓸 수 있다.

a = []
if not a:
    print("비어있다")  # 비어있다

 


 

비교 연산자

비교 연산자는 모두 bool을 반환한다.

print(3 > 2)   # True
print(3 < 2)   # False
print(3 == 3)  # True
print(3 != 2)  # True
print(3 >= 3)  # True
print(3 <= 2)  # False

파이썬은 연속 비교도 지원한다.

x = 5
print(1 < x < 10)   # True
print(1 < x < 4)    # False

다른 언어에서는 1 < x and x < 10으로 써야 하지만, 파이썬은 수학적 표현 그대로 쓸 수 있다.

 


 

논리 연산자

and, or, not 세 가지를 사용한다.

print(True and True)   # True
print(True and False)  # False
print(False or True)   # True
print(False or False)  # False
print(not True)        # False
print(not False)       # True

 

단락 평가 (Short-circuit Evaluation)

and는 앞이 False이면 뒤를 평가하지 않는다. or는 앞이 True이면 뒤를 평가하지 않는다.

def check():
    print("check 호출됨")
    return True

False and check()  # check 호출 안 됨
True or check()    # check 호출 안 됨

이 특성 때문에 andorbool이 아닌 실제 평가된 값을 반환한다.

print(0 and "hello")   # 0      (앞이 Falsy이면 앞 값 반환)
print(1 and "hello")   # hello  (앞이 Truthy이면 뒤 값 반환)
print(0 or "hello")    # hello  (앞이 Falsy이면 뒤 값 반환)
print(1 or "hello")    # 1      (앞이 Truthy이면 앞 값 반환)

이를 활용하면 기본값 처리를 간결하게 쓸 수 있다.

name = input() or "익명"

입력이 빈 문자열이면 "익명"을 사용한다.

 


 

코딩테스트 활용 패턴

조건 만족 개수 세기

nums = [1, -2, 3, -4, 5]
print(sum(x > 0 for x in nums))  # 3

플래그 토글

visited = False
visited = not visited
print(visited)  # True

딕셔너리 기본값 처리

d = {"a": 1}
val = d.get("b") or 0
print(val)  # 0

'Study > Python' 카테고리의 다른 글

[Python] 조건문  (0) 2026.03.07
[Python] 사전(Dict)과 집합(Set)  (0) 2026.03.07
[Python] 리스트(List)  (0) 2026.03.07
[Python] 문자열(String) 자료형과 튜플  (1) 2026.03.07
[Python] Number 자료형  (0) 2026.03.07