假设我使用twisted
' s defer.inlineCallbacks
获得以下代码:
from twisted.internet import defer, reactor
def main() -> None:
reactor.callWhenRunning(
lambda: main_task().addBoth(
lambda _: reactor.stop()))
reactor.run()
@defer.inlineCallbacks
def main_task():
data = yield fetch_a_lot_of_data()
yield write_data_to_disk(data)
defer.returnValue(None)
if __name__ == "__main__":
main()
main_task
的正文不会返回任何内容,但main_task
实际上会返回一个生成defer.Deferred
个对象的生成器... @defer.inlineCallbacks
装饰器用来代替函数返回另一个defer.Deferred
对象
那么我应该如何注释main_task
的返回值?
def main_task() -> None:
,任务的结果?def main_task() -> Generator[defer.Deferred, object, None]:
,main_task的返回值,如果它没有装饰器吗?def main_task() -> defer.Deferred:
,装饰函数的返回值?......或其他完全不同的东西?