装饰器
定义:本质是函数,为其他函数添加附加的功能。
原则:1、不能修改原函数的源代码
2、不能修改被原函数的调用方式
重点理解:
1、函数即“变量”
2、高阶函数:a.
b.返回值中包含函数名
3、嵌套函数:
热身: 感受一下Python的解释器
__author__ = 'jcx' def foo(): print("in the foo") bar() #解释器依次解释,先声明print后bar def bar(): print("in the bar") #找到bar,定义 foo() #只要在调用前声明就可以
1 Output: 2 in the foo 3 in the bar
应用:
1、打印程序执行时间
1 __author__ = 'jcx' 2 3 import time 4 5 def timer(func): #timer(test1) func = test1 6 def deco(*args, **kwargs): 7 start_time = time.time() 8 func(*args, **kwargs) 9 stop_time = time.time() 10 print("Func RunTime = %s" % (stop_time - start_time)) 11 return deco 12 13 @timer #等于作了这部赋值 test1 = timer(test1) 14 def test1(): 15 time.sleep(0.1) 16 print("in the test1") 17 18 @timer 19 def test2(name,age): #test2 = timer(test2) test2() = deco() 20 print("test2:", name,age) 21 22 test1() #实际是在执行deco() 23 test2("jcx",24) #带参数
24
输出结果:
1 in the test1 2 Func RunTime = 0.10228705406188965 3 test2: jcx 24 4 Func RunTime = 2.09808349609375e-05