Generators
반복자를 생성하는 개체
iterator 개체의 일종
특별한 종류의 함수 개체
메모리 효율적으로 실행 가능
처음에는 아무것도 실행 X
next()하면 다음 yield문 전까지 실행
next() 호출될 때까지 가만히 있으므로(실행을 미루므로) lazy evaluation
map, filter 함수도 제너레이터 함수
def countdown(n):
for i in range(n, 0, -1):
yield i
# def countdown(n):
# yield from range(n, 0, -1)
counter = countdown(5) # 제너레이터를 호출하여 반복자 개체 생성
print(next(counter)) # 5
print(next(counter)) # 4
print(next(counter)) # 3
print(next(counter)) # 2
print(next(counter)) # 1
print(next(counter)) # 더 이상 가져올 값이 없으므로 StopIteration 예외 발생