더북(TheBook)

19.3 발생자 표현식

발생자(generator) 표현식은 리스트 컴프리헨션과 비슷하지만, [] 대신 ()를 쓴다.

>>> g = (x**2 for x in range(5))

>>> g

<generator object <genexpr> at 0x7f4c45a786c0>

결과는 시퀀스 값들을 어떻게 반복할지 아는 생성자 객체다. 그러나 리스트 컴프리헨션과 달리 생성자 표현식은 한 번에 모든 값을 계산하지 않는다. 대신 값을 요청받는 것을 기다린다. 생성자 표현식에서는 내장 함수 next를 사용해 생성자의 다음(next) 값을 가져온다.

>>> next(g) 0

>>> next(g) 1

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