더북(TheBook)

이터레이터의 가장 실용적인 사용 방법은 innot in 키워드와 함께 사용하는 것이다. 예를 들어 다음과 같이 n 이하(작거나 같은)의 피보나치 수열을 생성하는 이터레이터를 만들어 보자.

def make_fibo_gen(n):
    a, b = 1, 1
    while a <= n:
        yield a
        a, b = a + b, a

yield 문은 기본 함수를 제너레이터 함수로 변경하기 때문에 제너레이터 객체(이터레이터)를 반환한다. 이제 다음과 같이 입력한 숫자가 피보나치인지 아닌지 테스트할 수 있다.

n = int(input('Enter number: '))
if n in make_fibo_gen(n):
    print('number is a Fibonacci. ')
else:
    print('number is not a Fibonacci. ')

이 예시는 생산된 이터레이터가 문제를 일으킬 수도 있는 무한 시퀀스를 산출하지 않기 때문에 제대로 동작한다. 대신 이터레이터는 n이 피보나치 숫자가 아니면 스스로 종료된다.

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