您可以
value将
StopIteration(可能是
StopIteration其本身)属性视为实现细节,而不是设计用于“常规”代码中。
看一下指定了Python 3.3功能的PEP 380
yield from:它讨论了一些
StopIteration用于携带返回值的替代方法。
由于不应该在普通
for循环中获取返回值,因此没有语法。与您不应该
StopIteration明确捕获的方式相同。
一个适合您情况的好的解决方案是使用小的实用程序类(对于标准库可能足够有用):
class Generator: def __init__(self, gen): self.gen = gen def __iter__(self): self.value = yield from self.gen
这将包装任何生成器并捕获其返回值以供以后检查:
>>> def test():... yield 1... return 2...>>> gen = Generator(test())>>> for i in gen:... print(i)...1>>> print(gen.value)2
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)