装饰器

定义:本质是函数,为其他函数添加附加的功能。

原则: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
02-14 03:13