标签:函数返回 python 关联 传递 tar 应用 事务 一个 pytho
语法糖对于计算机的运行并没有任何的好处,但是对于程序员的好处是很大的,方便我们写代码,所以称为糖
#******************************装饰器************************* # 装饰器本质上就是一个python函数,他可以让其他函数在不需要做任何代码变动的前提下,增加额外的功能,装饰器的返回值也是一个函数对象。 # 装饰器的应用场景:比如插入日志,性能测试,事务处理,缓存等等场景 import time def func1(): print(‘in func1‘) def timer(func): def inner(): start = time.time() func() #这里的func取得是形参,形参给的是func1,所以这里执行的是func1() print(time.time() - start) return inner func1 = timer(func1) #func1作为参数传递到timer函数中,timer函数返回一个inner的返回值赋值给func1,func1()也即inner() func1() #timer这个函数是用来计算别的函数(形参为函数名)的运行时间
#********装饰器语法糖****** import time def timer(func): def inner(): start = time.time() func() print(time.time() - start) return inner @timer #==> func1 = timer(func1) 除了这条语句,其他的语句都一样,而@timer 就相当于 timer(func1)语句, #这个@timer语句相当于把timer函数和与它相邻的下一个函数以func1 = timer(func1)这样的形式关联起来 def func1(): print(‘in func1‘) time.sleep(1) #延时1s def func2(): print(‘in func2‘) time.sleep(2) #延时2s func1() func2() # in func1 # 1.0009326934814453 输出结果是1s多,很明显func1函数扩展了计时功能 # in func2
import time def timer(func): def inner(): start = time.time() func() print(time.time() - start) return inner @timer #==> func1 = timer(func1) 除了这条语句,其他的语句都一样,而@timer 就相当于 timer(func1)语句, #这个@timer语句相当于把timer函数和与它相邻的下一个函数以func1 = timer(func1)这样的形式关联起来 def func2(): print(‘in func2‘) time.sleep(2) #延时2s def func1(): print(‘in func1‘) time.sleep(1) #延时1s func1() func2() # in func1 # in func2 # 2.0009799003601074 #这次因为func2和timer相邻,所以fun2扩展了计时功能
标签:函数返回 python 关联 传递 tar 应用 事务 一个 pytho
原文地址:https://www.cnblogs.com/perfey/p/9141661.html