大家好,我是杨数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原创,欢迎关注,带你一起长知识。
Copyright © 2015-2022 北方快报网版权所有 备案号:京ICP备2021034106号-50 联系邮箱: 55 16 53 8@qq.com