ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python装饰器

2022-06-02 01:32:18  阅读:174  来源: 互联网

标签:return 孙悟空 python args func kwargs 装饰 def


什么是装饰器。

  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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有