美文网首页Python简明教程呆鸟的Python数据分析Code
Python简明教程第15节:装饰器参数和装饰器解除

Python简明教程第15节:装饰器参数和装饰器解除

作者: 老友旧巷 | 来源:发表于2018-07-20 17:30 被阅读22次

装饰器参数

上面介绍的装饰器中的闭包和被装饰的函数的参数是相同的。

装饰器参数

其实只要保证闭包和被装饰的函数中的参数保持一致就行了。其中一个概念是可变参数,其实就是一个带星号(*)的变量名,它的本质是使用一个元组来存储数量不确定的参数。

如果闭包也就是装饰器的内层函数和被装饰的函数之间的参数无法匹配的话是不能对被装饰的函数进行装饰的,有兴趣的可以试一下。

多个装饰器

关于被装饰的函数,它可以有多个装饰器,像一幅白纸,可以被红色装饰,也同时可以被绿色装饰,装饰的顺序不同可能会有不同的效果,例子可能不是很恰当,但差不多就是这么回事。

和白纸一样,多个装饰器的情况,要注意指定顺序,只要细心应该没什么问题。

多装饰器

装饰器解除

如果,很不幸的遇见一个善变的老板或者产品。你可能还会有恼火的事情。比如你刚加好装饰器,他又告诉你之前的代码就可以了,新加的功能又不要了。也就是说之前的函数就可以了,不需要装饰了。这是你有句什么话要讲来着。

怎么办呢?

删了写好的装饰器。

万一之后又要呢?毕竟产品和老板都是善变的生物。

这时候只需要接触装饰器就好了,就能使用函数被装饰之前的功能了。

使用函数名调用其__wrapped__属性得到原来的被装饰之前的函数。

解除

关于被装饰的函数中的信息,在被包装之后就丢失了,比如函数名,文档字符串,参数等等。

但是我们使用@wrap注解可以保存这些信息,该注解必传的参数书函数名。我们使用这个注解主要就是为了获取这些信息,在这里是为了获取被装饰前的函数。

元信息

好了,大概就是这样。

Then,that’s all,thank you。

相关文章

  • Python简明教程第15节:装饰器参数和装饰器解除

    装饰器参数 上面介绍的装饰器中的闭包和被装饰的函数的参数是相同的。 其实只要保证闭包和被装饰的函数中的参数保持一致...

  • Python中的装饰器

    Python中的装饰器 不带参数的装饰器 带参数的装饰器 类装饰器 functools.wraps 使用装饰器极大...

  • 透析Python装饰器--透过现象看本质

    》眼花缭乱 Python的装饰器(也称语法糖)大致分为这几类: 无参数装饰器 有参数装饰器 装饰类的装饰器 无参数...

  • 透析Python装饰器-------------透过现象看本质

    》眼花缭乱 Python的装饰器(也称语法糖)大致分为这几类: 无参数装饰器 有参数装饰器 装饰类的装饰器 无参数...

  • [译] Python装饰器Part II:装饰器参数

    这是Python装饰器讲解的第二部分,上一篇:Python装饰器Part I:装饰器简介 回顾:不带参数的装饰器 ...

  • python装饰器

    装饰器简述 要理解装饰器需要知道Python高阶函数和python闭包,Python高阶函数可以接受函数作为参数,...

  • Python3简明教程五

    这部分主要说明Python3的迭代器、生成器、装饰器等相关知识。 来源:实验楼Python3简明教程 1. 迭代器...

  • 装饰器

    """@装饰器- 普通装饰器- 带参数的装饰器- 通用装饰器- 装饰器装饰类- 内置装饰器- 缓存装饰器- 类实现...

  • 让你Python到很爽的加速递归函数的装饰器

    Python技巧——好用的一个装饰器 今天我们会讲到一个[装饰器] 注记:链接“装饰器”指Python3教程中的装...

  • typescript 五种装饰器

    装饰器类型 装饰器的类型有:类装饰器、访问器装饰器、属性装饰器、方法装饰器、参数装饰器,但是没有函数装饰器(fun...

网友评论

    本文标题:Python简明教程第15节:装饰器参数和装饰器解除

    本文链接:https://www.haomeiwen.com/subject/niqqmftx.html