首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

第57p,装饰器魔法糖,多个装饰器的使用

大家好,我是杨数Tos,这是《从零基础到大神》系列课程的第X篇文章,第三阶段的课程:Python进阶知识:Python进阶知识:详细讲解Python中的函数(十)====> 函数的嵌套之装饰器详解(下篇)。

函数是非常重要的内容,在这里,我会用10篇左右的文章详细讲解Python中函数定义与使用的规则。

阅读提醒:建议小白先看一遍:【计算机基础知识】和【Python基础知识】课程,否则你不一定听得懂!

一、装饰器的魔法“糖”

1、用法

在Python中提供了一个装饰器的简洁用法,即:在需要被装饰的方法前面@装饰器名称即可;

用法:

@装饰器名称

被装饰对象

例如:

@inner这一句就等同于fun = inner(fun);

2、执行过程

@装饰器名称

当Python解释器遇到@时,会将被装饰对象当作参数,传递给装饰器,并将最终的赋值返回给被装饰对象;

二、多个装饰器

1、多个装饰器的用法

用多层装饰器达到效果;(建议:装饰器的层数最多不要超过3个,因为装饰器的个数过多只会增加程序的复杂性,让程序的可读性降低)

格式:

@装饰器1

@装饰器2

被装饰对象

2、执行过程

多个装饰器,加载顺序从被装饰对象最近的开始,先执行装饰器2,再执行装饰器1;

例如:

@fun1

@fun2

def fu(x):

print("被装饰对象{}".format(x))

它的执行过程如下:

@fun2等同于:fun2内的wrp内存地址 = fun2(fu)

@fun1等同于:fun1内的wrp的内存地址=fun1(fun2内的wrp内存地址);

 整个执行过程是先调用了fun2内装饰器的功能,将结果返回;

 再调用fun1内的装饰器的功能,并将前面执行的结果当作参数传给fun1,然后返回结果;

 最后,执行被装饰对象的代码;结束程序运行!

最后,还一种多层有参装饰器的用法,因为我们一般使用得比较少,只会在后期的实战案例中体现。

以上是本期内容,如果有表达不对的内容,欢迎您的留言、斧正,我们一起天天向上。

感谢您的阅读,您的三连【关注、点赞、收藏】就是对我最大的支持,谢谢!

本文由杨数Tos原创,欢迎关注,带你一起长知识。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200808A0C51W00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券