더북(TheBook)

이 코드는 예상대로 작동하고 코드도 한 줄 짧다. if 문에서 대입 결과와 4를 비교하기 위해 대입식을 괄호로 둘러싸야 한다는 점이 중요하다. 레모네이드 예제에서는 대입식이 다른 큰 식의 하위 식이 아니라, if 문의 조건에서 대입식 자체가 0이 아닌지 비교하는 데 쓰였으므로 괄호가 필요하지 않았다. 다른 식과 마찬가지로 가능하면 대입식 주변에 괄호를 쓰는 일을 피해야 한다.

이런 반복적인 패턴의 변종으로, 조건에 따라 현재 위치를 둘러싸는 영역에 있는 변수에 값을 대입하고 그 변수를 바로 함수 호출에 사용하는 경우를 들 수 있다. 예를 들어 고객이 바나나 스무디를 주문했다고 하자. 스무디를 만들려면 바나나 슬라이스가 최소 두 개는 필요하고, 슬라이스가 부족하면 OutOfBananas 예외를 발생시켜야 한다. 이 로직을 전형적인 방식으로 작성하면 다음과 같다.

def slice_bananas(count):
    ...

class OutOfBananas(Exception):
    pass

def make_smoothies(count):
    ...

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

try:
    smoothies = make_smoothies(pieces)
except OutOfBananas:
    out_of_stock()
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.