目录

Python中的函数装饰器

目录

这个函数,允许直接作为装饰器使用或者通过函数调用的方式获得装饰器,前提是这个函数的第一个位置参数不是一个可调用的对象。

1
2
3
4
5
6
7
8
def decorator(*args, **kwargs):
    def wrapper(fun):
        def inner(*inner_args, **inner_kwargs):
            return fun(*inner_args, **inner_kwargs)
        return inner
    if len(args) == 1 and len(kwargs) == 0 and callable(p := args[0]):
        return wrapper(p)
    return wrapper