더북(TheBook)

로직을 수행하는 다른 방식은 pieces = 0 대입문을 else 블록에 넣는 것이다.

count = fresh_fruit.get('바나나', 0)
if count >= 2:
    pieces = slice_bananas(count)
else:
    pieces = 0

try:
    smoothies = make_smoothies(pieces)
except OutOfBananas:
    out_of_stock()

두 번째 방식은 pieces 변수가 두 위치(if 문을 이루는 두 블록)에서 정의되는 것처럼 보여서 조금 이상하게 느껴질 수 있다. 파이썬의 영역 규칙으로 인해(변수 영역과 클로저의 상호작용 방식을 이해하라) 이런 식으로 정의를 분리해도 기술적으로는 잘 작동하지만, 코드를 읽거나 변수 정의를 찾아내기는 쉽지 않다. 따라서 많은 사람이 pieces = 0 대입을 먼저 하는 첫 번째 방식을 선호한다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.