Подтвердить что ты не робот

Соглашения об именах Python в декораторах

Существуют ли какие-либо "принятые" соглашения об именах для внутренних оболочек декораторов Python?

руководство по стилю не упоминает об этом, и эту удивительную запись о декораторах довольно согласуется с использованием вариантов "завернутого" для конечной функции, которая возвращается, но как насчет имен, используемых при создании декораторов, которые принимают аргументы?

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

В частности, каковы соглашения для inner, function и wrapped в приведенном выше примере?

4b9b3361

Ответ 1

Для этих имен нет стандартизованных соглашений (таких как PEP). Если вы проверите stdlib python, вы найдете много разных имен для этих функций.

Однако 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

Ответ 2

По определению декоратор в Python может быть функцией или классом, поэтому тип реализации (класс или функция) является фактором, определяющим, какое соглашение об именовании использовать. распространенной ошибкой является префикс имени функции с помощью декоратора ключевых слов. для получения дополнительной информации о декораторах см. ссылка