无参数装饰器
def decorator(fun):
def wrapper(x):
print('wrap {}'.format(fun.__name__))
return fun(x)
return wrapper
@decorator
def f(x):
print('in f: {}'.format(x))
def f(x):
print('in f: {}'.format(x))
f = decorator(f)
f('abc')
有参数类型装饰器
def arg_decorator(arg):
def decorator(fun):
def wrapper(x):
print('arg: {}'.format(arg))
print('wrap {}'.format(fun.__name__))
return fun(x)
return wrapper
return decorator
@arg_decorator('123')
def f(x):
print('in f: {}'.format(x))
def f(x):
print('in f: {}'.format(x))
def f(x):
print('in f: {}'.format(x))
decorator = arg_decorator('123')
f = decorator(f)
decorator = arg_decorator('123')
@decorator
def f(x):
print('in f: {}'.format(x))
f('abc')