Python学习之三大名器-装饰器、迭代器、生成器
一、装饰器
装饰,顾名思义就是在原来的基础上进行美化及完善,器这里指函数,所以说装饰器就是装饰函数,也就是在不改变原来函数的代码及调用方式的前提下对原函数进行功能上的完善。其核心原理其实是利用闭包。
格式 @关键字+装饰函数
被装饰函数()
注意:@行必须顶头写而且是在被装饰函数的正上方
按照形式可以分为:无参装饰器和有参装饰器,有参装饰器即给装饰器加上参数
以下示例是一个无参装饰器,为原函数添加了统计运行时间的功能
import time
#定义装饰器
def timer(func):
def wrapper(*args,**kwargs):
start_time = time.time()
res = func(*args,**kwargs)
stop_time = time.time()
print("run time is %s" %(stop_time-start_time))
return res
return wrapper
#调用装饰器
@timer
def index():
l = []
for i in range(10000000):
l.append(i)
#调用阶段
index()
以下是一个有参装饰器,实现简单的认证功能,#数字表示程序依次执行顺序
def auth2(auth_type): #1 #3
de