【发布时间】:2022-01-08 11:05:10
【问题描述】:
我想知道在这样的函数中执行完所有yield之后如何获取函数的返回值:
def gen_test():
l = []
for i in range(6):
l.append(i)
yield i
# i want to know this value after all iteration of yield
return l
【问题讨论】:
-
你能不能把它变成一个类方法,然后通过同一个类中的一个单独的getter方法收集那个值(如果你把它存储在
self中)? -
同一函数中的
return和yield在 py2 中返回错误 - 它在 py3 中是允许的,但适用于具有协同程序的特定用例。请参阅此问题以了解其背后的机制:stackoverflow.com/questions/26595895/… -
如果返回部分有效,则返回 l 并且我喜欢:return l, i
-
@match 我不会将此解释为 OP 特别想使用
return语句,而是他们想获得l的值以某种方式 并且正在询问如何。 -
也许您一开始就不应该使用生成器?由于此生成器保留对生成的每个项目的引用,因此它并不比使用列表更有效。