5
나는 천천히 파이썬 생성기 주위에서 머리를 감싸고있다.함수에서 생성기를 반환하는 것
현재 현실적인 문제는 아니지만, 왜 나는 함수에서 생성기를 반환 할 수 없는지 궁금합니다.
yield
으로 함수를 정의하면 함수는 생성자의 역할을합니다. 그러나 을 내부에 정의하고 그 대신 다른 함수를 반환하려고하면 next
메서드가있는 일반 함수가 생성됩니다.
즉, 아래 코드에서 give_gen()
접근 방식이 작동하지 않는 이유는 무엇입니까?
#!/usr/bin/python
import time
def gen(d):
n = 0
while True:
n = n + d
time.sleep(0.5)
yield n
def give_gen(d):
def fn():
n = 0
while True:
n = n + d
time.sleep(0.5)
yield n
return fn
if __name__ == '__main__':
g = give_gen(3) # does not work
g = gen(3) # works well
while True:
print g.next()
# AttributeError: 'function' object has no attribute 'next'
# in case of give_gen
왜 함수에서 생성기를 반환 할 수 없습니까?