【发布时间】:2017-07-14 12:22:09
【问题描述】:
我试图理解 Python 中的生成器并实现了这个:
def yfun():
print("into y fun ... ")
for x in range(1,6):
print("tryin to yield : {}".format(x))
yield x
yieldVar = yfun()
for val in yieldVar:
print("value generated -> ", val)
输出如下:
into y fun ...
tryin to yield : 1
value generated -> 1
tryin to yield : 2
value generated -> 2
tryin to yield : 3
value generated -> 3
tryin to yield : 4
value generated -> 4
tryin to yield : 5
value generated -> 5
你能解释一下为什么这个函数被一次又一次地调用吗?变量不应该具有值并且应该在生成器变量上进行迭代吗?
【问题讨论】:
-
当您调用该函数时,它会为您提供一个生成器对象。遍历该对象会执行您的
yfun定义中产生值的代码。 -
看看docs。
-
是什么让你觉得函数被一次又一次地调用?毕竟
into y fun只打印一次。 -
是的,这正是我们试图理解的内容,但是生成输出的方式“试图产生”和“产生的价值”它们一定不能相互干扰
标签: python python-3.x generator