Q & A

None과 False는 같은가요?

NoneFalse로 취급되긴 하지만 NoneFalse는 같지 않습니다. None은 아무것도 없다는 뜻이며 False는 거짓을 나타냅니다. 다음과 같이 is 연산자로 NoneFalse가 같은지 확인해보면 False가 나오므로 둘은 서로 다릅니다.

>>> None == False
False
>>> None is False
False

if 조건문만 사용할 때와 elif를 사용할 때의 차이점은 무엇인가요?

다음과 같이 if 조건문만 사용하면 모든 if 조건문의 조건식을 검사한 뒤 코드를 실행합니다.

a, b, c = 10, 20, 30
 
if a == 10:        # 조건식이 참
    print('10')    # 출력
if b == 20:        # 조건식이 참
    print('20')    # 출력
if c == 30:        # 조건식이 참
    print('30')    # 출력

실행 결과

10
20
30

if 조건문의 조건식이 모두 만족하므로 10, 20, 30이 출력됩니다. 만약 두 번째, 세 번째 ifelif라면 실행 결과가 달라집니다.

a, b, c = 10, 20, 30
 
if a == 10:        # 조건식이 참
    print('10')    # 출력
elif b == 20:      # 조건식을 검사하지 않고 건너뜀
    print('20')
elif c == 30:      # 조건식을 검사하지 않고 건너뜀
    print('30')

실행 결과

10

if 조건문 뒤에 elif가 연결되어 있을 때는 첫 번째 if의 조건식이 만족하면 뒤에 오는 elif의 조건식은 검사하지 않고 그냥 건너뜁니다. 예제에서는 실제로 세 조건식이 모두 만족하지만 처음에 오는 if의 코드만 실행하고, 나머지 조건식은 검사하지 않고 건너뛰었으므로 10만 출력됩니다.

만약, 다음과 같이 첫 번째 if의 조건식이 만족하지 않았다면 두 번째 elif의 코드만 실행하고, 세 번째 elif는 건너뜁니다. 즉, 가장 처음 만족하는 if 또는 elif의 코드만 실행합니다.

a, b, c = 5, 20, 30
 
if a == 10:        # 조건식이 거짓
    print('10')
elif b == 20:      # 조건식이 참
    print('20')    # 출력
elif c == 30:      # 조건식을 검사하지 않고 건너뜀
    print('30')

실행 결과

20

if, elif는 여러 코드 중에서 하나만 실행할 때 사용합니다.