python的装饰器怎么用
发表于:2025-01-24 作者:千家信息网编辑
千家信息网最后更新 2025年01月24日,这篇文章主要讲解了"python的装饰器怎么用",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"python的装饰器怎么用"吧!1、实现a+b的功能def
千家信息网最后更新 2025年01月24日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]+2
b = args[1]*2
return fun(a, b)
else:
return fun(*args)
return C
return B
@D(flag=False)
def A(a, b):
print(a + b)
return a + b
if __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 : PyCharm
def D(flag):
def B(fun):
def C(*args):
print("我是D 装饰器")
print("当前输入值内容变为:", *args)
if flag:
a = args[0] + 2
b = args[1] * 2
return fun(a, b)
else:
return fun(*args)
return C
return B
def E(fun):
def F(*args):
print("我是E 装饰器")
print("当前输入值内容变为:",*args)
a = args[0] + 10
b = args[1] + 10
return fun(a, b)
return F
@D(flag=True)
@E
def A(a, b):
print(a + b)
return a + b
if __name__ == "__main__":
A(1, 2)
输出结果是:
我是D 装饰器
当前输入值内容变为:1 2
我是E 装饰器
当前输入值内容变为:3 4
27
当出现多个装饰器,按顺序分别进行对应功能的计算,因此根据以上示例代码,先进行装饰器D的计算,将a/b变为3/4;然后进入装饰器E的计算,将a/b变为了13/14,最后进入A()函数,并输出27。
感谢各位的阅读,以上就是"python的装饰器怎么用"的内容了,经过本文的学习后,相信大家对python的装饰器怎么用这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!
函数
参数
内容
功能
输入
输出
结果
学习
情况
数量
顺序
优秀
上下
上下文
代码
先进
印象
原装
变量
多个
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
64位系统数据库连接错误
网络技术人员培训制度
济源哪里学计算机网络技术专业
胜宏科技工业互联网
db2数据库没人用
sql重建数据库索引
教育游戏人才软件开发
计算机网络技术的ppt课件
阿拉德之怒官方服务器会关服吗
网络技术服务业实习内容写什么
金山区专业软件开发服务是什么
上海网络技术股份股票
绿色全光网络技术联盟成立
关于网络安全的高分电影
游戏软件开发技术培训
蓝谷海洋科技互联网平台
广州服务器托管价格
河北实用软件开发推荐
奉贤区个人软件开发询问报价
天长工业软件开发技术代理商
数据库学生表命令
观看国家网络安全心得体会
韩国站群服务器
天正v5.0服务器为空
数码宝贝数据库
软件开发平台研发费用
思科网络网络技术学院书籍
OD查找数据库连接密码
崩坏三怎么查服务器
筑牢网络安全红线