`if`, `elif`, `else`는 조건에 따라 실행 경로를 나눈다. 조건은 꼭 bool일 필요가 없고 객체의 참·거짓 규칙을 따른다.

items = []
if not items:
    print("비어 있음")

value = 0
if value is None:
    print("값 없음")
else:
    print("0도 유효한 값")

`and`와 `or`는 bool로 바꾸지 않고 결과를 결정한 피연산자 자체를 반환한다. `name = supplied or "guest"`는 supplied가 빈 문자열이어도 기본값으로 바꾼다. 빈 문자열이 유효하다면 명시적으로 None을 검사한다.

C++의 switch에 해당하는 구조로 Python 3.10 이상의 `match`가 있다. 단순 값뿐 아니라 리스트, 딕셔너리, 클래스의 구조도 분해한다. 포괄 패턴 `_`은 마지막에 둔다.

Python 4. 조건문과 참·거짓 규칙의 핵심 흐름도
그림. 빈 값과 None을 구분해야 조건의 의미가 정확해진다.