在Python2和3上使函数只接受关键字参数的修饰程序。
kwargs-onl的Python项目详细描述
未维护:我不再维护此包,因为它用于 Python2兼容性和我使用过的所有其他项目现在都是Python3 只有。如果您想继续维护,请联系我。
一个decorator,用于使函数仅接受python 2上的关键字参数 和3。
如果您只使用python 3,则不需要这样做,只需这样做即可:
defmyfunction(*,foo=1,bar=2):pass
为什么?
如果您正在创建一个库(它仍然支持python 2),您可能希望 使其api中的所有函数只接受关键字参数 原因:
- 为了避免用户混淆,例如,如果将x和y参数作为 坐标,很容易忘记哪一个方向可以通过它们。
- 为了使您的api更易于扩展,您将知道没有调用方依赖于 位置参数排序,因此可以重构它以使其有意义。
安装
使用pip:
pip install kwargs-only
在Python2.7和Python3.7上测试。
用法
导入decorator并将其应用于函数:
fromkwargs_onlyimportkwargs_only@kwargs_onlydefmyfunction(foo=1,bar=2):pass
然后用位置参数调用函数将导致它失败 TypeError:
>>>myfunction(1,2)...TypeError:myfunctionshouldonlybecalledwithkeywordargs
decorator通过允许第一个 如果参数名为self或cls,则该参数为位置参数。 kwargs_only应在classmethod之前应用于函数。 例如:
classMyClass:@classmethod@kwargs_onlydefmy_class_method(cls,foo=1):pass@kwargs_onlydefmy_instance_method(self,bar=1):pass
就这些!享受吧!
历史
待发布
1.0.1(2019-02-07)
- 将pypi开发状态更新为inactive。这个包裹不再是 已维护,请参阅自述文件。
1.0.0(2017-06-18)
- pypi上的第一个版本,具有kwargs_onlydecorator特性。