gpt4 book ai didi

Python 意外的 StopIteration

转载 作者:行者123 更新时间:2023-12-05 08:21:01 30 4
gpt4 key购买 nike

这是我的代码

class A:
pass

def f():
yield A()

def g():
it = f()
next(it).a = next(it, None)

g()

产生 StopIteration 错误,由 next(it).a = next(it, None) 引起。为什么?

文档说 next如果提供了默认值,函数不会引发 StopIteration,我希望它能从生成器(A 实例)中获取第一个项目并设置 a 属性为 None

最佳答案

因为 f 只产生一个值,所以你只能对它调用一次 next

表达式的右侧 (next(it, None)) 左侧被评估,因此耗尽了生成器。

然后在左侧调用 next(it).a 将触发 StopIteration

关于Python 意外的 StopIteration,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25102733/

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