[英]Python naming conventions in decorators
Python裝飾器內部是否有任何“可接受的”命名約定?
樣式指南沒有提到它, 關於裝飾器的這個令人敬畏的條目在使用“包裝”的變體為返回的最終函數時非常一致,但是在創建帶參數的裝飾器時使用的名稱呢?
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中的裝飾器可以是函數或類,因此實現的類型(類或函數)是決定使用哪種命名約定的因素。 一個常見的錯誤是使用關鍵字裝飾器為函數的名稱添加前綴。 有關裝飾器的更多信息,請參閱鏈接
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.