有参:在标准装饰器的外面多套一层,多套一层就需要额外的多调用一次
def auth(argv):
def wrapper(func):
def inner(*args,**kwargs)
print(argv)
username = input("请输入用户名字:")
password = input("请输入用户密码:")
if username == "laoda" and password == "laoda"
func(*args,**kwargs)
return wrapper
def foo():
print("I am father")
wrapper = auth("fuck")
foo = wrapper(foo)
foo()
def auth(argv):
def wrapper(func):
def inner(*args,**kwargs):
if argv:
print("If we‘re gonna do this,we‘ve got to do it nwo")
func(*args,**kwargs)
else:
func(*args,**kwargs)
return inner
return wrapper
多个装饰器装饰一个函数时,先执行离被装饰函数最近的装饰器
小技巧:v
不断调用自己本身
有明确的终止条件
原文:https://www.cnblogs.com/womenzt/p/12288548.html