yield 给了之后就没了吧?
所以下面这段代码的第二次next(generator)才会输出None?但是网上解释是:
“调用第 2 个 next(generator) 的时候,生成器恢复执行,由于使用 next() 来调用
生成器函数, value 的值会变成 None ,因此生成器函数继续执行到 yield value 时
,会将 value 的值 None 返回给解释器,然后再次暂停。”
>>> def echo(value=None):
... print("Begin...")
... try:
... while True:
... try:
... value = (yield value)
... except Exception as e:
... value = e
... finally:
... print("Clean up!!!")
...
>>> generator = echo(1)
>>> print(next(generator))
Begin...
1
>>> print(next(generator))
None
————————————————
版权声明:本文为CSDN博主「王大银子」的原创文章,遵循CC 4.0 BY-SA版权协议,转
载请附上原文出处链接及本声明。
原文链接:
https://blog.csdn.net/weixin_44412076/article/details/112099268【 在 ToSimplicity 的大作中提到: 】
: for x in y
: 这个y的要求是iterabled而不是非得是列表
: yield就是“给”,机器猫从口袋里掏东西,大雄问它要,它就拿一个,“给”,再问再给。。。。
: ...................
--
FROM 61.180.25.*