定义:本质上就是个函数,(装饰器其他函数)就是为了给其他函数添加附加功能
原则:1.不能修改被装饰的函数的源代码
2.不能修改被装饰的函数的调用方式
#-*-coding:utf-8-*-
1 import time 2 def timer(hello): 3 def func(*args,**kwargs): #函数传参,不限个数。 4 start = time.time() 5 hello(*args,**kwargs) #函数传参,不限个数。 6 end = time.time() 7 print("运行时间:%s"%(end - start)) 8 return func 9 @timer 10 def hello(): 11 time.sleep(2) 12 print("nihao")
13 hello()
注:装饰器得写在被装饰函数的上面。
小实验:密码验证
#-*-coding:utf-8-*-
import time
user = { #存储用户名和密码 "luozeng":'123', "xuemanfei":'456', "xutian":'789' } def yanzheng(hello): def func(*args,**kwargs): start = time.time() username = input("请输入用户:").strip() #用户输入 password = input("请输入密码:").strip() if username in user and password == user[username]: #用户名和密码验证 print("登陆成功") hello(*args,**kwargs) else: exit("用户名或密码错误!") end = time.time() print("运行时间:%s"%(end - start)) return func @yanzheng def hello(): print("你好!") hello()