在这种情况下:

async def foo(f):
    async def wrapper(*args, **kwargs):
        return f(*args, **kwargs)
    return wrapper

@foo
async def boo(*args, **kwargs):
    pass

调用foo作为boo decorator的decorator是异步调用吗?

--第一次编辑:

推荐答案

感谢@blacknght的 comments

def foo():
    def wrapper(func):
        @functools.wraps(func)
        async def wrapped(*args):
             # Some fancy foo stuff
            return await func(*args)
        return wrapped
    return wrapper

def boo():
    def wrapper(func):
        @functools.wraps(func)
        async def wrapped(*args):
            # Some fancy boo stuff
            return await func(*args)
        return wrapped
    return wrapper

as two decorators, 和

@foo()
@boo()
async def work(*args):
    pass

由于foo正在包装work协同程序,关键是在两个decorator 中都包装awaitfunc(*arg).

Python-3.x相关问答推荐

如何匹配字母,数字,短划线,逗号,但不是如果没有数字和字母?

我有个问题继承遗产合伙人

如何定义既允许固定单词又允许模式的pydanti.BaseModel?

Python将类实例变量转换为嵌套 struct

Django将任何查询显示为html表格

在Pandas 数据帧中为小于5位的邮政编码添加前导零

一起使用数据类和枚举

Python,Web 从交互式图表中抓取数据

如何在 histplot 中标记核密度估计

如何通过 GitLab V4 api 列出 gitlab 项目中的所有项目变量

python2和python3中的列表生成器

如果网站加载时间过长,如何强制 Selenium 刷新

正则表达式从文本文件中捕获包含制表符/空格和子字符串的部分字符串

从 h264 帧解析数据包时 PyAV 不一致

Semaphore信号量 Python 的工作原理

PyQt:退出时没有错误消息(回溯)

二进制文件的 Python 3 和 base64 编码

Tkinter AttributeError:对象没有属性'tk'

如何从同一文件夹中的模块导入功能?

Pruning in Keras