Python 装饰器

一.装饰器的使用

 

 

定义:装饰器:本质是函数,(装饰其它函数)就是为其它函数添加附加功能。

原则:1.不能修改被装饰函数源代码

   2.不能修改被装饰的函数的调用方式

 

实现装饰器知识储备:

1.函数即“变量”

2.高阶函数

  a:把一个函数名当做实参传给另外一个函数(不修改被装饰源代码

     的情况下为其添加功能)。

  b:返回值中包含函数名(不修改函数的调用方式)。

3.嵌套函数

注:嵌套函数是一层下,接着嵌套第二层。

 

 1 x=0
 2 def grandpa():
 3     # x=1
 4     def dad():
 5         x=2
 6         def son():
 7             x=3
 8             print (x)
 9         son()
10     dad()
11 grandpa()

高阶函数+嵌套函数=>装饰器

 

二.装饰器使用进阶

 

 

创建一个装饰器,不修改源文件,修改方式,添加新功能。

 1 import time
 2 def timer(func):
 3     def deco():
 4         start_time=time.time()
 5         func()
 6         stop_time=time.time()
 7         print("the func run time is %s" %(stop_time-start_time))
 8     return deco
 9 
10 def test1():
11     time.sleep(2)
12     print("123123")
13 test1 = timer(test1)
14 test1()
1 #执行
2 @time #test1=timer(test1)

注:使用了高阶函数,嵌套函数实现。

注:使用变量实现。

注:返回值是内存地址,加括号()执行内存地址。

注:1.可以创建变量来实现。

  2.可以直接在函数上写入“@变量名”等于变量实现。

 

注:内存变量机制

1.变量创建后会放入到内存中,函数也是变量。

2.变量后面的值在内存中,变量名则是门牌号。

3.当变量门牌号被删除时,内存中的值会被定期清理掉。

4.python是解释性语言。

 

posted @ 2017-11-01 17:00  kevin.Xiang  阅读(266)  评论(0编辑  收藏  举报