装饰器(docorator)
本质是函数,起装饰其他函数作用,为原函数添加附加功能
原则:不能修改被装饰函数的源代码
不修改被装饰函数的调用方式
装饰器需要的知识:
函数即变量
高阶函数
嵌套函数
装饰器=高阶函数+嵌套函数
含参方式
import time
def times(func): #times=deco(test) func=test
def deco(*arge,**kwarge):
start_time=time.time()
func(*arge,**kwarge)
stop_time=time.time()
print("in the test run %s"%(stop_time-start_time))
return deco
@times
def test(name):
time.sleep(2)
print(name)
print(" in the test")
#test=times(test)=@time
test('zyp')
当被装饰函数有几个不同的需求,但是大部分代码相同可以如下:
user,passwd = 'aaa','123456' def outer(auth_type): def waper(func): def into(*args,**kwargs): if auth_type == "local": username = input("Username:").strip() password = input("Password:").strip() if user == username and passwd == password: print("