Decorators

https://docs.python.org/3/reference/compound_stmts.html#function-definitions

INTRODUCTION

A function definition may be wrapped by one or more decorator expressions. Decorator expressions are evaluated when the function is defined, in the scope that contains the function definition.


# Syntax.

@decorator2(arg)
@decorator1
def func(argument_list):
    statements

# This is equivalent to

def func(argument_list):
    statements

func = decorator1(func)
func = decorator2(arg)(func)