装饰器中的Python命名约定
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了装饰器中的Python命名约定相关的知识,希望对你有一定的参考价值。
Python装饰器内部是否有任何“可接受的”命名约定?
style guide没有提到它,并且this awesome entry about decorators在使用“包装”的变体为返回的最终函数时非常一致,但是在创建带参数的装饰器时使用的名称呢?
def decorator_name(whatevs):
def inner(function):
def wrapped(*args, **kwargs):
# sweet decorator goodness
return wrapped
return inner
具体来说,在上面的例子中,inner
,function
和wrapped
的约定是什么?
答案
这些名称没有标准化的约定(例如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
另一答案
根据定义,Python中的装饰器可以是函数或类,因此实现的类型(类或函数)是决定使用哪种命名约定的因素。一个常见的错误是使用关键字装饰器为函数的名称添加前缀。有关装饰器的更多信息,请参阅link
以上是关于装饰器中的Python命名约定的主要内容,如果未能解决你的问题,请参考以下文章