帮助函数包装器/装饰器实现完美前向
项目描述
为函数包装器或装饰器提供简单辅助工具,使包装函数看起来与原始函数不可区分。
安装
使用 pip
pip install funcwrap
或者,您可以将 funcwrap.py 模块或甚至 funcwrap.wrap 函数本身作为您代码或程序的一部分进行重新分发,而无需任何许可后果。
使用方法
funcwrap.wrap 与标准 functools.wraps 函数类似。然而,它在Python语法级别上返回一个与包装函数的签名完全相同的包装器。
>>> from funcwrap import wraps
>>> def func(a='Hello,', *, b='World!'):
... pass
>>> @wraps(func)
... def wrapper(*args, **kwargs):
... return (args, kwargs)
>>> wrapper()
(('Hello,',), {'b': 'World!'})
>>> wrapper('Bye,', b='Quentin!')
(('Bye,',), {'b': 'Quentin!'})
重要:如果您计划包装除Python函数或lambda之外的可调用对象(例如,部分函数、方法、对象),请注意结果可能令人惊讶。在使用 funcwrap 之前,请确保包装函数的行为符合预期!
为什么(或不)使用 decorator?
funcwrap 是 decorator 模块的一个更轻量级的替代品。有许多原因可以坚持使用 decorator,也有一些原因可以尝试 funcwrap。
坚持使用 decorator 的原因
更经过测试和经验证,成熟的包
具有不同的API,更适合编写装饰器
支持生成器和协程函数
支持低于3.5的Python版本
等等
使用 funcwrap 的原因
支持Python 3.8的 位置只参数
更简单、更短的代码,如果需要,更容易理解和修改
许可证:您可以将其作为代码或程序的一部分重新分发此模块,无需保留任何许可证通知
具有更适合您需求的不同API(@wraps(func) 与 @decorator)
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪一个,请了解更多关于 安装包 的信息。
源代码发行版
funcwrap-0.0.1.tar.gz (4.3 kB 查看散列)
构建发行版
funcwrap-0.0.1-py3-none-any.whl (3.5 kB 查看散列)
关闭
funcwrap-0.0.1.tar.gz的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | 644e818e18d9189d560ae5dac0e11a40ced7da3fe938281215d683397c9745ab |
|
MD5 | 53557f682e2a8b5214a2f94519d1e4bf |
|
BLAKE2b-256 | 07cb23eaf2aab8ea5c16c294223ced0b4d9b69b90e24753fc410c0c8cd640ca9 |
关闭
funcwrap-0.0.1-py3-none-any.whl的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | 311fb906965da7f5ff09ada1745458e57819977d3f2625b1bd508675811cf041 |
|
MD5 | 145d6f75ef85ca8017d41711c20001a9 |
|
BLAKE2b-256 | 0942ecc76e444af2d0351d488fb1e5b23527f2bd47723563a2f6cafa200e735e |