【发布时间】:2016-12-05 17:34:28
【问题描述】:
有没有什么方法可以调用一次函数,然后在不同的时间多次返回数据?
例如,假设我有以下代码:
def do_something():
for i in range(1, 10):
return 1
但是,我希望能够从单个函数调用中返回多个数据,但在异步时间,这可能吗?
对于上下文,我有一个程序可以生成 word 文档,将它们转换为 pdf,然后将它们组合成一个 pdf 文档。我希望能够从 GUI 调用外部函数来创建文档,然后显示一个进度条,显示该函数的当前进度。
编辑:
我已经知道yield 函数。我认为我在问题底部的具体问题会有所帮助。更清楚地说,我正在寻找一种从函数返回多个值并为每个返回值引发不同事件的方法。虽然这可能是一个糟糕的例子,但我想要做的是类似于 Javascript 中的.then(){},但能够使用多个返回值执行.then(){}
【问题讨论】:
-
是的,确实有这样的东西:
yieldstackoverflow.com/questions/231767/… -
否
yield你必须一次又一次地打电话。他希望它被称为单次。 -
@harshil9968 生成器需要调用一次。您存储迭代器,然后一次又一次地调用 iterator。这就是 for 循环语义所做的。重复调用函数会导致迭代器丢失状态并从头开始。
-
“在异步时间”是什么意思?你的意思是当被问到时,带有
yield的生成器或迭代器是做什么的?你的意思是在预定的时间,这可以通过一个带有计时器发送消息的单独线程来完成?您是指在除时间之外的预定情况下,这也可以通过发送消息来完成,具体取决于情况,或者更简单地使用回调函数?你还有别的意思吗?
标签: python function python-3.x