python的装饰器怎么用
发表于:2025-12-03 作者:千家信息网编辑
千家信息网最后更新 2025年12月03日,这篇文章主要讲解了"python的装饰器怎么用",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"python的装饰器怎么用"吧!1、实现a+b的功能def
千家信息网最后更新 2025年12月03日python的装饰器怎么用
这篇文章主要讲解了"python的装饰器怎么用",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"python的装饰器怎么用"吧!
1、实现a+b的功能
def A(a, b): print(a + b) return a + bif __name__ == "__main__": A(1, 2)
2、现在我想函数A不变的情况下,实现a+2+b*2的功能 -- 函数带参数或者参数数量不确定
def B(fun): def C(*args): a = args[0]+2 b = args[1]*2 return fun(a,b) return C@Bdef A(a, b): print(a + b) return a + bif __name__ == "__main__": A(1, 2) 输出结果:7
(1)在main函数运行A(1,2)时,先进入装饰器B中,并将a/b参数传给*args(这里args可表示不限数量的变量输入);在对参数a/b进行修改后,最后进入A函数进行 计算。
(2)函数B的入参是 fun,函数C的入参是 args,对应的实际值即为A(),(a,b)
3、在添加装饰器后,又想继续使用原函数功能 -- 装饰器带参数
def D(flag):def B(fun):def C(*args):if flag:a = args[0]+2b = args[1]*2return fun(a, b)else:return fun(*args)return Creturn B@D(flag=False)def A(a, b):print(a + b)return a + bif __name__ == "__main__":A(1, 2)输出结果:3
通过flag字段的判断,可以实现A()原功能或者A的增加功能。
这里要注意下,在原装饰器B函数外面又加了一层函数D,为 了加深印象,可 以这样理解:
D是为 了flag参数的,B是为了A()的,C是为了a/b参数的。对应的顺序是基于flag/A/ab的上下文决定。
4、在写完函数D后,发现又想 加新功能,怎么办? -- 装饰器叠罗汉。
# coding=utf-8# @Auther : "鹏哥贼优秀"# @Date : 2019/10/24# @Software : PyCharmdef D(flag):def B(fun):def C(*args):print("我是D 装饰器")print("当前输入值内容变为:", *args)if flag:a = args[0] + 2b = args[1] * 2return fun(a, b)else:return fun(*args)return Creturn Bdef E(fun):def F(*args):print("我是E 装饰器")print("当前输入值内容变为:",*args)a = args[0] + 10b = args[1] + 10return fun(a, b)return F@D(flag=True)@Edef A(a, b):print(a + b)return a + bif __name__ == "__main__":A(1, 2)输出结果是:我是D 装饰器当前输入值内容变为:1 2我是E 装饰器当前输入值内容变为:3 427
当出现多个装饰器,按顺序分别进行对应功能的计算,因此根据以上示例代码,先进行装饰器D的计算,将a/b变为3/4;然后进入装饰器E的计算,将a/b变为了13/14,最后进入A()函数,并输出27。
感谢各位的阅读,以上就是"python的装饰器怎么用"的内容了,经过本文的学习后,相信大家对python的装饰器怎么用这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!
函数
参数
内容
功能
输入
输出
结果
学习
情况
数量
顺序
优秀
上下
上下文
代码
先进
印象
原装
变量
多个
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
正规的网络技术专业
php反序列化数据库
树形 数据库
开发一个软件开发难不难
广播网络技术
互联网科技城市分布图
网络安全突发事件分为哪几类
日丰软件开发加班严重吗
服务器打印机可以留存吗
传奇176怪物数据库
python软件开发实战
可以一起编辑的数据库
哪种云服务器
黄浦区网络技术服务认真负责
网络安全大赛个人冠军
汕头聊天软件开发费用是多少
金蝶的账套和数据库之间联系
无需备案域名服务器
cae仿真计算服务器配置
贪吃蛇如何升级服务器
杭州培训软件开发需要多少钱
中专计算机网络技术专业定义
北京锐角网络技术待遇怎么样
软件开发加班好吗
支付宝查询大数据库
手机应用连服务器断断续续
服务器哪种性价比高
数据库建立索引原理
大学网络安全的ppt
星云伟业网络技术