더북(TheBook)

두 번째 방법은 루프 안에서 원하는 대상을 찾았는지 나타내는 결과 변수를 도입하는 것이다. 원하는 대상을 찾자마자 break로 루프를 빠져나온다.

def coprime_alternate(a, b):
    is_coprime = True
    for i in range(2, min(a, b) + 1):
        if a % i == 0 and b % i == 0:
            is_coprime = False
            break
    return is_coprime

assert coprime_alternate(4, 9)
assert not coprime_alternate(3, 6)

두 접근 방법 모두 코드를 처음 보는 사람에게는 훨씬 더 명확해 보인다. 상황에 따라 둘 다 좋은 선택이 될 수 있다. 하지만 else 블록을 사용함으로써 얻을 수 있는 표현력보다는 미래에 이 코드를 이해하려는 사람들(자신 포함)이 느끼게 될 부담감이 더 크다. 파이썬에서 루프와 같은 간단한 구성 요소는 그 자체로 의미가 명확해야 한다. 따라서 절대로 루프 뒤에 else 블록을 사용하지 말아야 한다.

기억해야 할 내용

• 파이썬은 forwhile 루프에 속한 블록 바로 뒤에 else 블록을 허용하는 특별한 문법을 제공한다.

• 루프 뒤에 오는 else 블록은 루프가 반복되는 도중에 break를 만나지 않은 경우에만 실행된다.

• 동작이 직관적이지 않고 혼동을 야기할 수 있으므로 루프 뒤에 else 블록을 사용하지 말라.

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