装饰器的演变过程:
例.实现一个函数测试电脑的读取速度并花了多少时间
1 import time 2 def gettime(arg): 3 starttime=time.time() 4 arg() 5 endtime=time.time() 6 print(endtime-starttime) 7 8 def go(): 9 lastnume=0 10 for i in range(100000000): 11 lastnume+=1 12 print(lastnume) 13 gettime(go)
装饰器本质: 装饰器=函数接口+嵌套函数
原则:1.不能修改被装饰函数的源码 2.不能修改被装饰函数的调用方式
作用:为其他函数添加附加功能
1 # 装饰器 2 def gettime(arg): 3 "函数接口用于封装函数" 4 def warpper(*args,**kwargs): 5 "用于返回实现的功能" 6 starttime=time.time() 7 arg() 8 endtime=time.time() 9 print(endtime-starttime) 10 return warpper 11 12 @gettime 13 def go(): 14 lastnume=0 15 for i in range(100000000): 16 lastnume+=1 17 print(lastnume) 18 go()
登陆系统:
1 user,passwd = 'Temu','etc123123' 2 def auth(auth_type): 3 print("auth func:",auth_type) 4 def outer_wrapper(func): 5 def wrapper(*args, **kwargs): 6 print("wrapper func args:", *args, **kwargs) 7 if auth_type == "local": 8 username = input("Username:").strip() 9 password = input("Password:").strip() 10 if user == username and passwd == password: 11 print("