더북(TheBook)

마지막으로 한 번 더 강조한다. yield를 함수 make_fibo_gen에 넣어서 제너레이터 함수를 만들었고, 우리가 필요했던 제너레이터 객체가 반환되었다는 것을 기억하자. 앞서 살펴본 예시는 다음과 같이 풀어서 작성할 수도 있다. 똑같이 동작한다.

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

항상 (yield를 품고 있는) 제너레이터 함수 스스로가 제너레이터 객체가 아니라, 제너레이터 공장이라는 것을 기억하자. 혼란스러운 개념이지만 익숙해지면 된다. 그림 4-4에서 보여 주는 개념을 자주 참고하자.

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