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 # -------我正在玩游戏------------

 理解:使用装饰器我们的目的是:在不改变原函数的情况下,能够增加原函数的功能;本质实为打乱原用的调用关系,将原函数指向另外一个新函数,而这个新函数内部又有相应的变量来调用我们原函数,从而在新函数中添加一些新的功能。这样我们在调用原函数时,就会执行这些功能,从而对原函数有一个装饰的作用;

转载于:https://www.cnblogs.com/houzichiguodong/p/9173874.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值