函数装饰器
作用:当我们想要增加原有函数的功能,但是不想(无法)改变原来的函数,可以通过装饰器来实现。就是把自己定义的函数装饰一遍,然后返回一个新的函数(注意是新的,已经不是本来定义的函数了)
使用:
- 首先定义一个装饰器函数,该函数接受一个函数作为参数,然后返回一个闭包
- 在闭包中调用传递进来的函数,并且前后可以根据需要进行修饰
例子:
#定义一个装饰器
def zhuangshiqi(func):
def wrapper():
print('在前面修饰')
func()
print('在后面装饰')
return wrapper
@zhuangshiqi
def test():
print('你好')
test()
在前面修饰
你好
在后面装饰
实例二:
import time def zhuangshiqi(fun): def inner(*args): #*args不定位参数,有无参数,几个参数都可以 start=time.time() fun(*args) #要装饰的函数 end=time.time() print(end-start) return inner @zhuangshiqi #哪个函数要用装饰器,在前面@一下装饰器就可以了 def mysum(x,y): sum=0 for i in range(x,y): #有2个位置形参 sum+=i @zhuangshiqi def mypro(): sum=1 for i in range(9999): #没有参数 sum*=i mysum(20,8999) #调用函数记得给实参 mypro()