python装饰器
Posted 猴子吃果冻
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python装饰器相关的知识,希望对你有一定的参考价值。
1.预备知识:
1 def Test01(): 2 print(\'------Test1----------------\') 3 def Test01(): 4 print(\'------------Test02---------\') 5 Test01() 6 # 结果为:------------Test02---------
如下图所示:我们可以将函数名理解为变量名,将函数理解为一个具体的变量,定义函数时,函数名与函数的关系理解为一种赋值的关系,即就是把这个函数赋值给了对应的函数名;而在内存中一个变量只能表示或者说指向一块内容
2.原理代码示例:
# 定义装饰器函数 def decorate(func): def inner(): print(\'-------你在干什么?----------\') func() return inner # 定义功能函数 def play(): print(\'-------我正在玩游戏------------\') Test = decorate(play) Test() # 执行结果为: # -------你在干什么?---------- # -------我正在玩游戏------------
通过下图1-5步来解释上述函数的调用过程,并引出装饰器
3.装饰器代码示例:
1 # 装饰器函数 2 def decorate(func): 3 def inner(): 4 print(\'-------你在干什么?----------\') 5 func() 6 return inner 7 @decorate # 等价于上图中分析的play=decorate(play) 8 def play(): 9 print(\'-------我正在玩游戏------------\') 10 # 调用play函数 11 play() 12 13 # 结果为: 14 # -------你在干什么?---------- 15 # -------我正在玩游戏------------
理解:使用装饰器我们的目的是:在不改变原函数的情况下,能够增加原函数的功能;本质实为打乱原用的调用关系,将原函数指向另外一个新函数,而这个新函数内部又有相应的变量来调用我们原函数,从而在新函数中添加一些新的功能。这样我们在调用原函数时,就会执行这些功能,从而对原函数有一个装饰的作用;
以上是关于python装饰器的主要内容,如果未能解决你的问题,请参考以下文章