31

Python 装饰器的内部是否有任何“公认的”命名约定?

样式指南没有提到它,这个关于装饰器的很棒的条目在为返回的最终函数使用“包装”的变体方面非常一致,但是在创建带参数的装饰器时使用的名称呢?

def decorator_name(whatevs):
    def inner(function):
        def wrapped(*args, **kwargs):
            # sweet decorator goodness
        return wrapped
    return inner

具体来说,上例中 、 和 的约定innerfunction什么wrapped

4

2 回答 2

24

这些名称没有标准化的约定(例如 PEP)。如果您检查 python 标准库,您会发现这些函数有很多不同的名称。

但是,decorator装饰器函数是一个相当常见的名称inner
调用你的wrapped函数并用包装函数来wrapper装饰它也很常见(这也是它的常用名称)。functools.wraps(f)ffunc

def decorator_name(whatevs):
    def decorator(f):
        @wraps(f)
        def wrapper(*args, **kwargs):
            pass # sweet decorator goodness
        return wrapper
    return decorator
于 2012-06-09T00:22:03.113 回答
1

根据定义,Python 中的装饰器可以是函数或类,因此实现类型(类或函数)是决定使用哪种命名约定的因素。一个常见的错误是在函数名称前加上关键字装饰器。有关装饰器的更多信息,请参见链接

于 2017-12-25T12:32:10.683 回答