Python 文档给出了这个代码示例:
import asyncio
async def main():
print('Hello ...')
await asyncio.sleep(1)
print('... World!')
asyncio.run(main())
为什么
main
在 asyncio.run()
中被称为(以及在其他异步函数中,如
asyncio.gather()
)?
这让我很困惑,因为在 JavaScript 中,我们做类似
document.addEventListener('click', someFunction)
的事情 - 我们传递 someFunction
,而不是它的结果。
我假设,异步函数返回一些可调用对象,但Google 说不。
asyncio.run 需要一个 coroutine 作为参数。
参考 Python glossary,
main
是一个 coroutine 函数,它返回一个协程。
因此,
main()
必须传递给asyncio.run
,而不是main
。