您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

从python生成器接收'return'值的最佳方法

从python生成器接收'return'值的最佳方法

您可以valueStopIteration(可能是StopIteration其本身)属性视为实现细节,而不是设计用于“常规”代码中。

看一下指定了Python 3.3功能PEP 380yield 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
python 2022/1/1 18:32:25 有218人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶