gpt4 book ai didi

Python - 理解生成器的发送函数

转载 作者:太空狗 更新时间:2023-10-29 18:29:50 26 4
gpt4 key购买 nike

我正在学习 Python yield,发现 yield 不仅是生成器输出返回值的方式,也是将值放入生成器的方式.比如下面的代码

def f():
print (yield),
print 0,
print (yield),
print 1

g = f()
g.send(None)
g.send('x')
g.send('y')

在全局范围内,它发送'x''y'到生成器,因此在f 它将输出 x 0 y 1。但是我看不懂

  • 有 2 个 yield 但有 3 个 send。为什么要在第一时间发送None
  • 它在最后一个发送 时抛出一个StopIteration。有什么办法可以避免这个异常吗?

谁能解释一下?提前致谢。

最佳答案

来自 the documentation :

When send() is called to start the generator, it must be called with None as the argument, because there is no yield expression that could receive the value.

至于异常,实在是避无可避。生成器在完成迭代时会抛出此异常,因此与其避免它,不如捕获它:

g = f()

try:
g.send(None)
g.send('x')
g.send('y')
except StopIteration:
print 'Done'

关于Python - 理解生成器的发送函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13716591/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com