如何确定函数或方法是普通函数还是异步函数?我希望我的代码自动支持正常或异步回调,并且需要一种方法来测试传递的函数类型。
async def exampleAsyncCb():
pass
def exampleNomralCb():
pass
def isAsync(someFunc):
#do cool dynamic python stuff on the function
return True/False
async def callCallback(cb, arg):
if isAsync(cb):
await cb(arg)
else:
cb(arg)
根据传递的函数类型,它应该正常运行或等待。我尝试了各种方法,但不知道如何实施 isAsync()
。
原文由 Ecko 发布,翻译遵循 CC BY-SA 4.0 许可协议
使用 Python 的 检查 模块。
inspect.iscoroutinefunction(object)
这个函数从 Python 3.5 开始可用。该模块可用于功能较少的 Python 2,当然没有您正在寻找的模块: 检查
顾名思义,检查模块对于检查很多东西很有用。文件说
该模块的一些基本功能是:
它还包含检索源代码的功能
方法的命名很直观。如果需要,可以在文档中找到说明。