装饰器中的Python命名约定

mst*_*ger 25 python coding-style

Python装饰器内部是否有任何"可接受的"命名约定?

风格指南中没有提到它,关于装修这真棒项是在使用"包装"变种为返回的最终功能,但对于创建带参数的装饰时使用的名字相当一致的?

def decorator_name(whatevs):
    def inner(function):
        def wrapped(*args, **kwargs):
            # sweet decorator goodness
        return wrapped
    return inner
Run Code Online (Sandbox Code Playgroud)

具体来说,什么是对的约定inner,function以及wrapped在上面的例子?

Thi*_*ter 19

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

但是,它decorator是装饰器函数的一个相当常见的名称inner.
这也是常见打电话给你的wrapped功能wrapper与装饰它functools.wraps(f)f被包装的函数(func也是一种常见的叫法).

def decorator_name(whatevs):
    def decorator(f):
        @wraps(f)
        def wrapper(*args, **kwargs):
            pass # sweet decorator goodness
        return wrapper
    return decorator
Run Code Online (Sandbox Code Playgroud)

  • 呃,如果你有一个名为`decorator`的单参数函数,那么很明显它的参数是什么,无论它叫什么. (5认同)
  • @MikeStringer我发现自己使用f或_f或g,因为它符合数学符号(例如`f(x)`),并强调了传递的函数本身并不需要受到限制。(与键函数或比较函数,或仅接受一个参数的函数等相对)。 (2认同)