在Python2和3上使函数只接受关键字参数的修饰程序。

kwargs-onl的Python项目详细描述


https://img.shields.io/travis/adamchainz/kwargs-only/master.svghttps://img.shields.io/pypi/v/kwargs-only.svg

未维护:我不再维护此包,因为它用于 Python2兼容性和我使用过的所有其他项目现在都是Python3 只有。如果您想继续维护,请联系我。


一个decorator,用于使函数仅接受python 2上的关键字参数 和3。

如果您只使用python 3,则不需要这样做,只需这样做即可:

defmyfunction(*,foo=1,bar=2):pass

为什么?

如果您正在创建一个库(它仍然支持python 2),您可能希望 使其api中的所有函数只接受关键字参数 原因:

  • 为了避免用户混淆,例如,如果将xy参数作为 坐标,很容易忘记哪一个方向可以通过它们。
  • 为了使您的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通过允许第一个 如果参数名为selfcls,则该参数为位置参数。 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特性。

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

推荐PyPI第三方库


热门话题
java我是否需要构造一个带有*非final*但不可变字段的不可变类?   java如何使用jaxb读取属性?   java为什么不打印空值以外的任何内容?   java Struts2如何在不使用struts的情况下重定向到操作。xml?   java方法参数未在其实现中使用   在Java中更改终端内部的变量   Spring中的java依赖项注入失败   java如何使用getAttribute Selenium防止获取重复的HREF   优先级队列的java顺序不符合预期   java如何使用Spring TaskExecutor在应用程序的所有请求中使用单个任务池   java Firebase RecyclerView不会从数据库中检索项目并将其显示在屏幕上。屏幕是空的   java将YUV_420_888转换为字节数组   spring停止使用Java缓存文件   java在执行maven clean安装时,我在eclipse智能家居中遇到了这种错误   stream Java=下载缓冲区未满?冲洗/缓冲是如何工作的?   查询SQL server时重置java JDBC连接   java如何避免在两个函数中使用相同的逻辑。   转换java。lang.Boolean到Scala Boolean