def deco(func):
def wrapper(*arg, **kw):
print('decorator arg: %s' % arg_of_decorator)
print('call %s in decorator' % func.__name__)
return func(*arg, **kw)
return wrapper
@deco
def test():
pass
#等价于 test=deco(test),即在@修饰器名称后直接加(被修饰的函数名)
#因此,带参数的修饰器可以如下实现:
def decorator(arg_of_decorator):
def deco(func):
def wrapper(*arg, **kw):
print('decorator arg: %s' % arg_of_decorator)
print('call %s in decorator' % func.__name__)
return func(*arg, **kw)
return wrapper
return deco
@decorator("修饰器参数")
def test1():
pass
#等价于 test1 = decorator("修饰器参数")(test1) = deco(test1)
#修饰器的参数已经传递进去
Python修饰器(带参数的修饰器)
最新推荐文章于 2024-08-09 11:44:26 发布