python装饰器
作者:互联网
什么是装饰器。
1.python装饰器是指再不破坏函数原有的功能时让其函数拥有其他功能。
举几个例子
一个男程序员, 穿上女生的衣服,带上女生的假发(衣服与假发为这个男人添加了一些女生的特点,而你内在还是一个男生内在没有改变,只是添加了一些男生没有的特 点)
再比如,一个毛坯房,你将它进行装修,买家具让它变得漂亮(其装修就是装饰器,而并没有改变毛坯房的本质)
装饰器的优点
1.提高了代码的复用性,方便以后的开发
实例:
假如执行一段代码,函数名为“孙悟空()”让其打印技能
# python3支持用中文做函数名, # 这里为了方便你理解,就用中文,实际情况为了兼容性,你可别用中文哦 def 孙悟空(): print('吃桃子') 孙悟空() # 输出: # 吃桃子
现在你又想为它添加新技能"如意金箍棒"怎么添加呢
对的,你可以在吃桃子下方添加一行代码pring("如意金箍棒
")。
但这样就破坏的原本代码,如果要添加很多技能呢,就会很麻烦
这时候就用到装饰器了,如下:
def 炼丹炉(func): # func就是‘孙悟空’这个函数
def 变身(*args, **kwargs): #*args, **kwargs就是‘孙悟空’的参数列表,这里的‘孙悟空’函数没有传参数,我们写上也不影响,建议都写上
print('有火眼金睛了') # 加特效,增加新功能,比如孙悟空的进了炼丹炉后,有了火眼金睛技能
return func(*args, **kwargs) #保留原来的功能,原来孙悟空的技能,如吃桃子
return 变身 # 炼丹成功,更强大的,有了火眼金睛技能的孙悟空出世
@炼丹炉
def 孙悟空():
print('吃桃子')
孙悟空()
# 输出:
# 有火眼金睛了
# 吃桃子
既保留了原本代码的完整性,右增加了新功能,方便了下次的使用。
装饰器可以一次性调用多个。代码如下
def 炼丹炉(func):
def 变身(*args, **kwargs):
print('有火眼金睛了')
return func(*args, **kwargs)
return 变身
def 龙宫走一趟(func):
def 你好(*args, **kwargs):
print('有金箍棒了')
return func(*args, **kwargs)
return 你好
def 拜师学艺(func):
def 师傅(*args, **kwargs):
print('学会飞、72变了')
return func(*args, **kwargs)
return 师傅
@拜师学艺
@龙宫走一趟
@炼丹炉
def 孙悟空():
print('吃桃子')
孙悟空()
# 输出
# 学会飞、72变了
# 有金箍棒了
# 有火眼金睛了
# 吃桃子
标签:return,孙悟空,python,args,func,kwargs,装饰,def 来源: https://www.cnblogs.com/csn123456/p/16336315.html