#Python3中装饰器@

Python3中装饰器

什么是装饰器?
装饰器,顾名思义,狭义的可以理解为起到一个装饰的作用。
即定义一个函数后,想要重新使这个函数增加新的功能,但是不改变原函数的内容。可以想象着进行一个包装,然后再调用原函数,其实就是调用的包装后的函数。
下面我们通过实例进行阐述:

import time 						#def caltime(f):就是一个装饰器,
									#装饰器一般都写在顶上,当函数要调用装饰器的时候
									#用@进行连接 下文中的@caltime
def caltime():
    def func():
        t1 = time.time()			#上文导入时间包,t1开始 t2结束 计算f()运算时间
        f()
        t2 = time.time()	
        print(t1)
        print(t2)
        print(t2 - t1)		
    return func							#返回func函数
    
@caltime							#连接上文的装饰器 
def getwater():
    print('取了一杯水')
    print(pow(2,100)/11*30+23**23)
getwater()
#(输出)	取了一杯水
		2.4337696909561263e+31
		1539880939.1847699
		1539880939.1857696
		0.0009996891021728516

@caltime这个语句相当于 执行 getwater = caltime(getwater),为getwater函数装饰并返回func
即getwater=func (实则getwater指向func函数)
所以 getwater()= func()
调用getwater() 实际是调用func()函数。
路径为下:

getwater()-->进入@caltime-->执行def caltime(f)-- 
#(@caltime-->执行def func中间并没有运行func函数,因为并没有进行调用函数func)
--->return func-->func()-->print(t2 - t1)	

后续再补上其他复杂类型的—

猜你喜欢

转载自blog.csdn.net/weixin_43097301/article/details/83155636
今日推荐