【发布时间】:2019-12-13 18:34:27
【问题描述】:
我想要一个函数来处理预定义管道中的数据,并且我需要中间和最后一步的数据,所以我想要一个可以调用两次的函数,在第一次调用中,函数返回中间数据,在第二次调用中,函数从最后一个返回位置开始,返回最终数据,所以是这样的:
def tworeturns(x):
intermediate = do-something(x)
return intermediate
final = do-something(intermediate)
return final
如何用python实现这个?
================================================ =============================
感谢 new-dev-123 的回答,我能够返回两个值,但后来又遇到了另一个问题。在第一次产量之后,我改变了中间体,当我第二次调用下一次时,我希望函数根据修改后的中间体进行计算,而不是原来的中间体。有没有办法做到这一点?
【问题讨论】:
-
尝试:返回中间,最终
-
我认为你想要一个协程 - 尝试使用
yield而不是 return 并使用next(tworeturns(x))从调用者那里驱动协程 -
如果你需要在不同的时间输出,那么你就不走运了。如果
do-something需要“状态”,您可以尝试使用生成器。否则,也许有一种方法可以重写(或拆分)函数,使其不可知。 -
不,我希望它们异步返回。因为我需要中间来决定如何计算最终的
标签: python python-3.x python-2.7 jupyter-notebook yield