티스토리 뷰

불리언

불리언 값에는 TrueFalse가 있습니다.

T = True
F = False

두 가지 값 밖에 없지만 불리언 형은 조건문과 반복문을 구성하는데 있어서 아주 중요한 부분이라고 할 수 있습니다. 조건이 실행될지 안될지, 반복을 실행할 지 안할 지를 결정하는 것이 불리언 값이라고 할 수 있습니다.

불리언 값은 대문자로 시작한다는 것을 잊지말아주세요.

거짓 같은 값(falsy)과 참 같은 값(truthy)

파이썬의 모든 자료형은 True나 False가 될 수 있습니다. 아직 이해가 되지 않으실 수도 있지만 참으로 평가되는 값을 truthy, 거짓으로 평가되는 값을 falsy라고 합니다. True는 아니지만 True처럼 평가되는 값들과 False는 아니지만 False처럼 평가되는 값들을 알아볼까요?

falsy와 truthy 구분하기

우선 falsy를 알아보도록 하겠습니다. 왜냐하면 falsy가 수가 적고, falsy가 아닌 것은 모두 truthy가 되기 때문입니다. False처럼 평가되는 값들은 None, 그리고 0으로 인식되는 것들(0, 0.0, 0/1), 비어있는 자료형('', (), [], {}, range(0) )입니다. 이러한 값들이 조건으로 들어가 있다면 해당 조건문은 실행되지 않습니다. 

if 0:
    print("0")
elif []:
    print("[]")
elif {}:
    print("{}")
else:
    print("falsy!")


아직 조건문에 대해서는 다루지 않았지만 간략히 말씀드리면 조건이 참 일때만 실행되지만 0, [], {}는 모두 거짓으로 평가되기 때문에 맨 마지막 구문만 실행되었습니다. 좀 이해가 되시나요?


falsy가 아닌 값들은 모두 truthy가 됩니다.

and, or이 참과 거짓으로 합쳐진다면?

참으로 판단되는 값과 거짓으로 판단되는 값을 구분할 줄 알아야 하는 이유는 and와 or을 만날 때 어떤 값을 가지게 되는 지 알아야 하기 때문입니다. and라는 조건이 붙고 참이라는 결과가 되기 위해서는 양쪽 다 참이어야 합니다. or이라면 한 쪽만 참이어도 됩니다. 그렇다면 a and b라는 구문이 있을 때 a가 거짓이라면 b의 값은 확인할 필요도 없이 a and b는 거짓이 됩니다. 그래서 파이썬은 첫 번째 계산에서 값이 확정되는 경우에는 단축계산을 합니다.(b를 검사하지 않습니다.) 


f = False
t = True
a = f and t //a의 값은 False입니다.


소스코드를 봐주세요. f의 값이 False이기 때문에 t를 검사하지 않고 a의 값은 False가 되는 것입니다. 만약 불리언 값이 아니고 truthy나 falsy가 오면 어떻게 될까요?


f = ""
t = "candy"
a = f or t //a의 값은 "candy"입니다.


불리언 값이 들어가는 것이 아니라 t의 값이 a에 대입되었습니다.


truthy나 falsy에 and나 or 연산자를 사용할 경우 값을 결정짓는 값이 변수에 들어갑니다.



지금 당장은 이해가 되지 않더라고 많은 구문을 접하다 보면 자연스럽게 이해되실 겁니다. 너무 걱정하지 마세요. 



공감은 제작자에게 큰 힘이 됩니다.


댓글