Search code examples
coding-stylepython

Python naming conventions in decorators


Are there any "accepted" naming conventions for the innards of Python decorators?

The style guide doesn't mention it, and this awesome entry about decorators is pretty consistent in using variants of "wrapped" for the ultimate function that is returned, but what about the names used when creating decorators that take arguments?

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

Specifically, what are the conventions for inner, function, and wrapped in the above example?


Solution

  • There are no standardized conventions (such as PEPs) for those names. If you check the python stdlib you'll find lots of different names for those functions.

    However, decorator is a rather common name for the decorator function inner.
    It is also common to call your wrapped function wrapper and decorate it with functools.wraps(f) with f being the wrapped function (func is also a common name for it).

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