python装饰器写法,python装饰器--原来如此简单

  python装饰器写法,python装饰器--原来如此简单

  装饰器(Decorators)是 Python 的一个重要部分。简单地说:它们是修改其他功能的功能。它们有助于使我们的代码更短,更有Pythonic风格。

  要理解Python中的decorator,我们必须先理解闭包的概念。(推荐学习:Python视频教程)

  在计算机科学中,闭包(英文:closures),也称为词法闭包或函数闭包,是指自由变量的函数。这个被引用的自由变量将与这个函数一起存在,即使它已经离开了创建它的环境。

  装饰器

  一个普通的装潢师一般是这样的:

  导入功能工具

  定义日志(函数):

  @functools.wraps(func)

  def包装(*args,**kwargs):

  print(call %s(): % func。__name__)

  print(args={} 。格式(*args))

  return func(*args,**kwargs)

  因此,返回包装器定义了一个装饰器,它打印出方法名及其参数。

  打电话,要使用@开头:

  @logdef测试(p):

  打印(测试。__name__ param: p)

  测试(“我是参数”)输出:

  致电测试():

  args=我是一个参数

  测试param :i我是一个param装饰器在使用时,用了@语法,让人有些困扰。实际上,decorator只是一个方法,和下面的调用方法没什么区别:

  def测试(p):打印(测试。__name__ param: p)

  包装器=日志(测试)

  包装(“我是一个参数”)@语法只是将函数传入装饰器函数,并无神奇之处。

  值得注意的是@functools.wraps(func),这是python提供的一个装饰器。它可以将原始函数的元信息复制到装饰器中的func函数中。函数的元信息包括文档字符串、名称、参数列表等。

  你可以试着去掉@ func tools . wrapps(func),你会发现test的输出。__name__成为一个包装器。

  更多Python相关技术文章,请访问Python教程专栏学习!这就是python decorator开始的细节。更多信息请关注热门IT软件开发工作室其他相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: