13.3 if 조건문의 동작 방식 알아보기

이번에는 조건식이 아닌 값으로 ifelse의 코드를 동작시켜 보겠습니다. 다음 내용을 IDLE의 소스 코드 편집 창에 입력한 뒤 실행해보세요.

if_else_boolean_none.py

if True:
    print('참')    # True는 참
else:
    print('거짓')
 
if False:
    print('참')
else:
    print('거짓')    # False는 거짓
 
if None:
    print('참')
else:
    print('거짓')    # None은 거짓

실행 결과

참
거짓
거짓

당연히 Trueif의 코드가 실행되고, Falseelse의 코드가 실행됩니다. 특히 NoneFalse로 취급되므로 else의 코드가 실행됩니다. 실제 코드를 작성할 때 변수에 들어있는 값이나 함수의 결과가 None인 경우가 많으므로 이 부분은 꼭 기억해두세요.

숫자는 정수(2진수, 10진수, 16진수), 실수와 관계없이 0이면 거짓, 0이 아닌 수는 참입니다.

if_else_number.py

if 0:
    print('참')
else:
    print('거짓')    # 0은 거짓
 
if 1:
    print('참')    # 1은 참
else:
    print('거짓')
 
if 0x1F:    # 16진수
    print('참')    # 0x1F는 참
else:
    print('거짓')
 
if 0b1000:    # 2진수
    print('참')    # 0b1000은 참
else:
    print('거짓')
 
if 13.5:    # 실수
    print('참')    # 13.5는 참
else:
    print('거짓')

실행 결과

거짓
참
참
참
참

문자열은 내용이 있을 때 참, 빈 문자열은 거짓입니다.

if_else_string.py

if 'Hello':    # 문자열
    print('참')    # 문자열은 참
else:
    print('거짓')
 
if '':    # 빈 문자열
    print('참')
else:
    print('거짓')    # 빈 문자열은 거짓

거짓

지금까지 불값 TrueTrue로 취급하는 10진수, 16진수, 2진수, 실수, 문자열로 if를 동작시켰습니다. 즉, 값 자체가 있으면 if는 동작합니다. 반대로 0, None, ''False로 취급하므로 else가 동작합니다.

참고 | 0, None, 빈 문자열을 not으로 뒤집으면?

0, None, 빈 문자열 ''not으로 뒤집으면 참이 되므로 if를 동작시킬 수 있습니다.

if_not.py

if not 0:
    print('참')    # not 0은 참
 
if not None:
    print('참')    # None은 참
 
if not '':
    print('참')    # not 빈 문자열은 참

실행 결과

참
참
참
참고 | True, False로 취급하는 것들

다음은 파이썬 문법 중에서 False로 취급하는 것들입니다.

  • None

  • False

  • 0인 숫자들: 0, 0.0, 0j

  • 비어 있는 문자열, 리스트, 튜플, 세트: '', "", [], (), set()

  • 클래스 인스턴스의 __bool__(), __len__() 메서드가 0 또는 False를 반환할 때

앞에서 나열한 것들을 제외한 모든 요소들은 True로 취급합니다. 리스트, 튜플, 세트는 뒤에서 자세히 설명하겠습니다.