【发布时间】:2013-12-14 04:43:12
【问题描述】:
当我在谷歌上搜索 python yield 时,我发现了一些有趣的东西,我以前从未知道过,即我们可以将值传递给 yield 以更改 next() 值。我希望一些新的 pythonist 现在可能会意识到这一点,我也不确定它是如何工作的。所以,如果有任何机构可以解释它是如何工作的,以及当我使用send() 发送新索引以产生时行为如何变化。
这是我的 sn-ps:
def print_me (count):
i = 0
while i < count:
val = (yield i)
if val is not None:
i = val
else:
i += 1
gen = print_me(10)
for i in gen:
if i == 5:
gen.send(8)
else:
print i
这是我的输出:
0
1
2
3
4
9
【问题讨论】:
-
您的问题是什么?你不理解行为的哪一部分?
-
当我发送一个新索引时,屈服点如何指向新索引。基本上我很困惑
yield是使用某种链表还是? -
我不太明白您所说的“屈服点如何指向新索引”是什么意思。当您使用
send时,您发送的值将成为yield表达式的值。如何在生成器中使用它取决于您。 -
这个“增强的”生成器语法是在 python 2.5 中添加的,用于构建协程。 read more in the PEP
-
这里有一些有趣的相关信息:stackoverflow.com/q/12324096/748858
标签: python python-2.7 yield