Python装饰器/修饰器(Decorator)
一、装饰器作用
不改变函数内部语句和结构,为函数增添新的功能。因为在Python中函数也是一个对象,且可以被赋值给变量,所以也可以通过变量调用函数。如
def foo():
print("i am foo")
if __name__=="__main__":
a=foo
a()
二、装饰器调用基本格式
@decorator
def foo():
print("i am foo")
相当于decorator(foo)。根据装饰器是否有参数,可以有多层嵌套形式。
(1)二层嵌套(装饰器无参数)
1. 装饰器无参数,函数无返回值、无参数
import time
def de_time(func):
def wrapper():
t1=time.time()
func()
t2=time.time()
print('运行时间为:%0.8f'%(t2-t1))
return wrapper
@de_time #装饰器无参数
#函数无返回值无参数
def feib():
a=0;
for i in range(2,100000+1):
if i%2==0:
a+=1
print(a)