python的装饰器怎么用
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章主要讲解了"python的装饰器怎么用",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"python的装饰器怎么用"吧!1、实现a+b的功能def
千家信息网最后更新 2026年11月01日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安全错误
数据库的锁怎样保障安全
合肥互联网科技公司
互联网科技革命
未来的互联网科技
科技类的互联网平台
无锡溥仪互联网科技有限公司
恒银科技与互联网金融
互联网校园科技培训
武汉健翔互联网络科技有限公司
荆州市昕露互联网络科技有限公司
移动互联网科技公司
搜狐科技互联网
西安小鹰速贷互联网科技有限公司
领航科技大厦互联网公司
有人说阿里系是互联网科技企业
下一代互联网重大应用科技园
湖北辰鑫科技互联网
互联网科技职业技能培训学校
安徽零酒互联网科技有限公司
每日互联网科技新闻
如何强化互联网金融科技
中国互联网科技股
融贸通互联网科技
长亮科技互联网金融
科技互联网的估值
互联网和黑科技的看法
民营互联网公司国防科技
银行科技岗属于互联网吗
互联网科技资金流入
互联网风格科技公司名称
互联网科技手抄报图片