编程语言
首页 > 编程语言> > python装饰器

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