简单的可调用参数检查和过滤
项目描述
argset 提供了一个简单的接口,用于确定一个可调用对象是否接受具有给定名称的参数,过滤一个可能的参数 dict,使其仅包含可调用对象接受的参数,并确定从可能的参数 dict 中缺失的任何必需参数。
安装
argset 需要 Python 3.6 或更高版本。只需使用 Python 3 的 pip 安装 argset 及其依赖项即可(你有 pip,对吧?)
python3 -m pip install argset
示例
检查函数的参数
>>> from argset import argset
>>> def my_func(foo, bar):
... print(f"foo={foo!r}")
... print(f"bar={bar!r}")
...
>>> a = argset(my_func)
>>> "foo" in a
True
>>> "quux" in a
False
过滤一组参数,仅保留函数接受的参数
>>> a.select({"foo": 42, "bar": 23, "quux": 17})
{'foo': 42, 'bar': 23}
>>> my_func(**a.select({"foo": 42, "bar": 23, "quux": 17}))
foo=42
bar=23
与上述相同,但现在函数接受 **kwargs
>>> from argset import argset
>>> def my_func2(foo, **kwargs):
... print(f"foo={foo!r}")
... for k, v in kwargs.items():
... print(f"{k}={v!r}")
...
>>> a2 = argset(my_func2)
>>> "foo" in a2
True
>>> "quux" in a2
True
>>> a2.select({"foo": 42, "bar": 23, "quux": 17})
{'foo': 42, 'bar': 23, 'quux': 17}
>>> my_func2(**a2.select({"foo": 42, "bar": 23, "quux": 17}))
foo=42
bar=23
quux=17
API
argset(func: Callable) -> ArgSet
检查一个可调用对象,并返回其参数的摘要作为一个 ArgSet
class ArgSet
一个表示可调用参数的表示。它具有以下属性和特性
- required_positional_only: int
只有位置参数且没有默认值的参数数量
- optional_positional_only: int
只有位置参数且有默认值的参数数量
- positional_only: int
所有位置参数的总数
- required_args: frozenset[str]
所有没有默认值的位参数或关键字参数的名称
- optional_args: frozenset[str]
所有有默认值的位参数或关键字参数的名称
- argnames: frozenset[str]
所有位参数或关键字参数的名称
- takes_args: bool
可调用是否有形式为*args的参数
- takes_kwargs: bool
可调用是否有形式为**kwargs的参数
ArgSet对象支持in操作符;形式为argname in a的表达式在argname在a.argnames中或a.takes_kwargs为True时返回True。
ArgSet对象具有以下方法
ArgSet.select(kwargs: Dict[str, Any]) -> Dict[str, Any]
返回所有在kwargs中且键为可调用接受的位参数或关键字参数的项。如果takes_kwargs为True,则返回值是kwargs的副本。
ArgSet.missing(kwargs: Dict[str, Any]) -> FrozenSet[str]
返回所有在required_args中但不在kwargs中出现的键
项目详情
下载文件
下载适用于您平台文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。
源分发
argset-0.1.0.tar.gz (6.6 kB 查看哈希值)
构建分发
argset-0.1.0-py3-none-any.whl (5.2 kB 查看哈希值)
关闭
argset-0.1.0.tar.gz的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | 8a41ee4789d37517c259984c11f2aa3639a90dc8fa446ff905ecc5fe6623c12d |
|
| MD5 | 8795036c84ede7599bed722d9445611b |
|
| BLAKE2b-256 | d0ee1c25e68d029e8daaf3228dababbf3261fa5d9569f6f705867b2ad4df9b6d |
关闭
argset-0.1.0-py3-none-any.whl的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | 107a632c7112faceb9fd6e93658dd461154713db250f7ffde5bd473e17cf1db5 |
|
| MD5 | 5fd57f8b97ffe7b2a98449afd293a372 |
|
| BLAKE2b-256 | b52b7aa284f345e37f955d86e4cd57b1039b573552b0fc29d1a522ec05c1ee41 |