簡體   English   中英

裝飾器中的Python命名約定

[英]Python naming conventions in decorators

Python裝飾器內部是否有任何“可接受的”命名約定?

樣式指南沒有提到它, 關於裝飾器的這個令人敬畏的條目在使用“包裝”的變體為返回的最終函數時非常一致,但是在創建帶參數的裝飾器時使用的名稱呢?

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

具體來說,在上面的例子中, innerfunctionwrapped的約定是什么?

這些名稱沒有標准化的約定(例如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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM