快速启动

要实现decorator,首先需要定义一个包装函数。

每次调用修饰函数时都会调用此函数。包装纸

函数需要四个位置参数:wrapped-包装函数,包装函数依次需要调用它。

instance-调用包装函数时绑定到的对象。

args-调用修饰函数时提供的位置参数列表。

kwargs-调用修饰函数时提供的关键字参数字典。

包装器函数可以做它需要做的任何事情,但是通常

调用通过^{tt2}传入的包装函数$

争论。

然后需要将decorator@wrapt.decorator应用于包装器

函数将其转换为decorator,而decorator又可以应用于

其他功能。import wrapt

@wrapt.decorator

def pass_through(wrapped, instance, args, kwargs):

return wrapped(*args, **kwargs)

@pass_through

def function():

pass

如果希望实现接受参数的decorator,请将

函数闭包中装饰器的定义。提供的任何参数

当decorator被应用时,将可用于

调用包装函数时的内部包装。import wrapt

def with_arguments(myarg1, myarg2):

@wrapt.decorator

def wrapper(wrapped, instance, args, kwargs):

return wrapped(*args, **kwargs)

return wrapper

@with_arguments(1, 2)

def function():

pass

当应用于普通函数或静态方法时,包装器函数

调用时将传递None作为instance参数。

当应用于实例方法时,调用的包装函数将

将调用方法的类的实例作为

instance参数。即使实例方法

通过类显式调用,实例作为第一个

争论。也就是说,实例永远不会作为args的一部分传递。

当应用于类方法时,调用的包装函数将

传递类类型作为instance参数。

当应用于类时,将传递调用时的包装函数

None作为instance参数。这里的wrapped参数

凯斯将是全班同学。

上面的规则可以用下面的例子来总结。import inspect

@wrapt.decorator

def universal(wrapped, instance, args, kwargs):

if instance is None:

if inspect.isclass(wrapped):

# Decorator was applied to a class.

return wrapped(*args, **kwargs)

else:

# Decorator was applied to a function or staticmethod.

return wrapped(*args, **kwargs)

else:

if inspect.isclass(instance):

# Decorator was applied to a classmethod.

return wrapped(*args, **kwargs)

else:

# Decorator was applied to an instancemethod.

return wrapped(*args, **kwargs)

因此,使用这些检查可以创建一个通用的decorator

这可以应用于所有情况。不再需要创建

普通函数和实例方法的decorator的不同变体,

或者使用其他包装器将函数装饰器转换为

将适用于实例方法。

在所有情况下,传递给包装函数的包装函数都被调用

以同样的方式,传递args和kwargs。这个

instance参数不需要用于调用包装的

功能。

python加载函数包_Python wrapt包_程序模块 - PyPI - Python中文网相关推荐

  1. python cmd下载模块_Python cmd包_程序模块 - PyPI - Python中文网

    CMDY 从python运行命令的一个方便的包 安装# latest version pip install git+https://github.com/pwwang/cmdy # released ...

  2. python加载dll失败_python tensorflow导入DLL加载失败

    我安装了最新的 python 3.6.4 x64版本 然后使用pip3为cpu-only安装tensorflow C:\>pip3 install tensorflow 但是当我尝试在pytho ...

  3. python下载matplotlib.finance模块_Python pyfinance包_程序模块 - PyPI - Python中文网

    PyFinance pyfinance是一个python包,用于投资管理和安全回报分析. 它是对面向量化金融的现有软件包的补充,例如pyfolio, 熊猫数据读取器,以及fecon235 支持巨蟒3. ...

  4. mysql金库模式_Python vault-anyconfig包_程序模块 - PyPI - Python中文网

    vaultanyconfig " rel="nofollow"> 使用加载和转储功能扩展hvac hashicorp vault客户端任何配置.这允许自动混合来自保 ...

  5. python创建和控制的实体称为_Python eds包_程序模块 - PyPI - Python中文网

    事实 事实在事实全局部分下定义:facts:-name:factschema:-{name:day_key,type:INTEGER,required:Yes}-{name:time_key,type ...

  6. inflect java_Python lemminflect包_程序模块 - PyPI - Python中文网

    lemminflect 一个用于英文引理和屈折的python模块. 关于 lemminflect使用字典方法对英语单词进行柠檬化,并将其屈折成用户提供的格式通用依赖项或penn treebank标记. ...

  7. python alphashape_Python alphashape包_程序模块 - PyPI - Python中文网

    Alpha形状工具箱 用于生成Alpha形状的工具箱. alpha形状通常用于泛化包含点集的边界多边形.alpha参数定义为值a,使得半径为1/a的圆盘的边可以在一组点的任意两个边成员之间绘制,并且仍 ...

  8. python data frame_Python dataframer包_程序模块 - PyPI - Python中文网

    数据框 尝试将任何文件加载到pandas数据帧中, 以最少的配置, 关注生物信息学 示例 通常,您将从磁盘读取文件(open('my-file.txt', 'rb')). 但是字节流在这里更简单.&g ...

  9. python安装dill_Python dill包_程序模块 - PyPI - Python中文网

    关于dill dill扩展python的pickle模块以进行序列化和反序列化 python对象的大多数内置python类型.串行化 是将对象转换为字节流的过程,反之亦然 其中之一是将字节流转换回py ...

最新文章

  1. 深度学习的实时面部姿势估计研究
  2. 吴恩达Coursera机器学习 - Chapter 4 多变量线性回归
  3. python进制表示方法_python 16进制表示什么
  4. 别找了,这才是 Pyecharts 的正确打开方式!
  5. ajax局部刷新_web前端入门到实战:实现html页面自动刷新
  6. qt为窗体部件设置阴影、类似日晕效果
  7. 阿里员工都在用的知识管理工具,究竟有何特别?
  8. 用于用户C语言标识符,下列可用于C语言用户标识符的一组是( )
  9. jQuery中事件及常用事件总结、jQuery中常见效果、隐式迭代、链式编程、样式操作、动画队列、不同元素绑定同一个事件
  10. python复杂代码示例_6 个例子教你重构 Python 代码
  11. python输入文字字符串、如何提取字符_用python正则表达式提取字符串
  12. linux 输入法框架xim,基于XIM协议的输入法原理与实现
  13. 青海大学市计算机科学与技术,曹腾飞 - 青海大学 - 计算机技术与应用系
  14. C库函数——fabs()
  15. 通过PS把普通数码照片制作成素描照片
  16. 洁净厂房洁净度等级SICOLAB
  17. 往自己脖子以上的投资永远不会贬值
  18. notepad编译java文件_notepad编译java
  19. 安装与使用IPy模块
  20. 大数据与云计算学习(1)

热门文章

  1. PHP-FPM对比Swoole:Swoole多了Reactor线程监听Socket 句柄的变化 代码初始化一次不结束进程 ws tcp mqtt服务
  2. JQUERY输入改变事件change
  3. Yii:$app来源
  4. Yii的scenarios
  5. c语言1 2 3 10000,在网上看到一个求2的10000次方的方法,有个地方看不懂,求大佬...
  6. windows7 php的php-ssh2,windows7下安装php的php-ssh2扩展教程_PHP教程
  7. java中this.value_java中关键字this的用法
  8. python中向量长度_python中向量指的是什么意思
  9. CentOS 8 利用yum源安装nginx
  10. 【sprinb-boot】@ComponentScan 跳过扫描 excludeFilters