一.装饰器的使用 |
定义:装饰器:本质是函数,(装饰其它函数)就是为其它函数添加附加功能。
原则: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是解释性语言。