python修饰器执行步骤_Python修饰器学习总结

1.大总结,修饰器就是把被修饰的函数作为一个参数传入修饰器函数。格式如下

@修饰器函数

def 函数

修饰器函数是要至少套一个函数的,即:

def xxx

def yyy

。。。

return yyy

这样,当你在某个函数上面加修饰器以后,以后再单独执行这个函数,都是自动调用修饰器的。

否则,修饰器只调用一次。具体见前4步

2.修饰器函数分2中,带参数和不带参数的

1.1)不带参数的修饰器函数:

被修饰的函数作为修饰器的第一层参数,格式如下:

def 修饰器函数(被修饰函数名):

def xxx():

...

执行被修饰函数

...

return a【被修饰函数的执行结果(一般返回这个,也可以自行处理返回别的,也可以不返回,自己定义)】

retrun xxx

执行原理:将被修饰函数作为一个参数代入修饰器,返回一个xxx函数,xxx函数被执行,最后返回a。我认为,def句作为定义语句是不直接执行的,所以修饰器函数首先执行的是返回xxx函数,然后执行xxx函数的内容。同理如果里面套了多个函数,也是先执行第一层的return,根据return结果执行

1.2)修饰器不带参数,但是被修饰函数带参数:

因为最终要在修饰器函数里面执行被修饰函数的,那如果被修饰函数带参数,这个参数怎么传入呢?

在要执行被修饰函数的那一层定义函数中,要求传入参数。参数数量不确定时,可以用*args, **kwargs自动适应参数个数和名称

1.3)修饰器带参数

修饰器的参数可以就是一个变量,也可以是一个类。参数是个类(cls的话,就可以在修饰器函数内部任意使用该类的属性、方法(cls.属性,cls.方法)。

如果修饰器带参数,那么修饰器的第一层参数就是修饰器自身的参数,第二层才是被修饰函数参数,又因为修饰器重复调用要至少2层函数,所以修饰器带参数的话,那么该修饰器就至少三层:

def 修饰器(修饰器参数):

def xxx(被修饰函数名):

def yyy:

...

return yyy

retun xxx

3.修饰器的跨文件使用

只要把修饰器及修饰器相关的参数(类)import进来,就可以直接用

4.一个函数应用多个修饰器

如步骤9

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值