将两个函数的签名与高级黑客合并。

merge-args的Python项目详细描述


https://travis-ci.org/Kwpolska/merge_args.svg?branch=master

这个小库使用高级python黑客更改 函数是自身和它包装的函数的混合体。就像 functools.wraps,但它允许包装函数添加自己的 把争论混为一谈。

用法

frommerge_argsimportmerge_argsdefold(foo,bar):"""This is old's docstring."""print(foo,bar)returnfoo+bar@merge_args(old)defnew(prefix,foo,*args,**kwargs):returnold(prefix+foo,*args,**kwargs)

如果然后运行help(new),则输出如下:

Help on function new in module __main__:

new(prefix, foo, bar)
    This is old's docstring.

它是怎么工作的?

我写了一篇详细的博客文章,描述了这个软件包的工作原理:

https://chriswarrick.com/blog/2018/09/20/python-hackery-merging-signatures-of-two-python-functions/

这个模块的灵感来自于python上的f4d3c0d3(freenode irc)。

许可证

版权所有©2018,克里斯·沃里克。 保留所有权利

以源和二进制形式重新分配和使用,有无 允许修改,但条件如下 会议:

  1. 源代码的重新分发必须保留上述版权 注意,此条件列表和以下免责声明。
  2. 以二进制形式重新分配必须复制上述版权 注意,此条件列表,以及 分发时提供的文件和/或其他材料。
  3. 本软件的作者姓名和 本软件的贡献者可用于支持或推广 从本软件衍生的产品,无需事先书面说明 同意。

本软件由版权所有者和贡献者提供 “原样”和任何明示或默示保证,包括但不包括 仅限于,适销性和适用性的默示保证 一个特殊的目的被放弃了。在任何情况下,版权 所有人或出资人对任何直接、间接、附带的, 特殊、惩戒性或后果性损害(包括但不包括 仅限于替代货物或服务的采购;使用损失, 数据或利润;或业务中断),无论是何种原因造成的 责任理论,无论是合同责任、严格责任还是侵权责任 (包括疏忽或其他)因使用而引起的 即使被告知有可能造成这种损害。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
内存Java正在运行。jar heapdump错误   java如何在安卓画布中弯曲文本区域?   java如何在Gdx 安卓游戏编程中获得矩形的真实触碰位置?   找不到java Spring MVC控制器   在Java中使用双重检查锁定单例扩展类   java在高效的时间和内存中动态执行insert(索引、数据)、delete(索引)、getAt(索引)操作。   java 安卓 Toast和视图帮助   java协议缓冲区:从文件中读取所有序列化消息   java如何在Jackson中为参数化接口类型执行通用自定义反序列化程序   与简单的空检查相比,使用(平面)映射的java优势是什么?   异步方法seam中的java Get contextparam   jar使用相同的java运行时运行另一个java程序   java访问Spring批处理中的作业参数   java给定字符串为空或null   在h2数据库1.4中找不到java类“org.h2.fulltext.FullTextLucene”。*不适用于Lucene Core 4*   java Spring Boot在使用@enableSync时不响应任何请求   java错误:在bash上找不到或加载主类pj2   “返回对象”和“返回(对象)”之间的Java差异   java Android开发:如何使用onKeyUp?