一个装饰器,使函数在Python 2和3中仅接受关键字参数。
项目描述
未维护: 我不再维护这个包,因为它是为了Python 2兼容性,并且我使用过它的所有其他项目现在都是Python 3专属。如果您想继续维护,请与我联系。
一个装饰器,使函数在Python 2和3中仅接受关键字参数。
如果您只使用Python 3,您不需要这个,您可以只做
def myfunction(*, foo=1, bar=2):
pass
为什么?
如果您正在制作一个库(仍然支持Python 2),您可能希望使其API中的所有函数都只接受关键字参数,出于以下几个原因
为了避免用户混淆,例如,如果您将 x 和 y 参数作为坐标,很容易忘记它们应该以什么顺序传递。
为了使您的API更容易扩展 - 您将知道没有调用者依赖于位置参数的顺序,因此可以重构以使其有意义。
安装
使用 pip
pip install kwargs-only
支持Python 2.7和3.4到3.8。
用法
导入装饰器并将其应用于函数
from kwargs_only import kwargs_only
@kwargs_only
def myfunction(foo=1, bar=2):
pass
然后使用位置参数调用函数将导致它因 TypeError 而失败
>>> myfunction(1, 2)
...
TypeError: myfunction should only be called with keyword args
装饰器通过允许第一个参数为位置参数,如果它的名字是 self 或 cls,来检测方法和类方法。应该在 classmethod 之前将 kwargs_only 应用到函数上。例如:
class MyClass:
@classmethod
@kwargs_only
def my_class_method(cls, foo=1):
pass
@kwargs_only
def my_instance_method(self, bar=1):
pass
这就是全部内容!祝您享受!
历史
1.1.1 (2019-12-21)
更新 PyPI 开发状态为不活跃。由于我将它复制到我的兼容 Python 2 的项目中,该包不再维护。我建议您也这样做,并放弃使用 Python 2!
1.1.0 (2019-11-15)
支持 Python 3.8。
1.0.2 (2019-10-28)
更新 PyPI 开发状态为活跃。由于我开始在兼容 Python 2 的项目中使用它,因此该包再次得到维护 :)
1.0.1 (2019-02-07)
更新 PyPI 开发状态为不活跃。该包不再维护,请参阅 README.rst。
1.0.0 (2017-06-18)
在 PyPI 上首次发布,包含 kwargs_only 装饰器。
项目详情
关闭
kwargs-only-1.1.1.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | eed949edb0f09c461aa12027bfa019cbc9105091768a13f625f3039f042a36cd |
|
MD5 | 9d128379ff0a3be5b1188e810fecd99f |
|
BLAKE2b-256 | b96b5412355d88016001d34ba8696a2ba14c7e79dab5ad83b02dd799259c86ba |
关闭
kwargs-only-1.1.1-py2.py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | a19facb8c21ad9cc079b63710791dd745643588a9985396c48268368dbce535e |
|
MD5 | 7367eeaf2c549f51d0091f5792e37f23 |
|
BLAKE2b-256 | bdaaf6df0d1275ebe9dacd3d542d56aa2111825f92644962eb0918810dbc7238 |