什么是装饰器。
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变了 # 有金箍棒了 # 有火眼金睛了 # 吃桃子