在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 iBatis加载对象列表   Eclipse中的javajboss调试   java Junit@AfterClass(非静态)   java如何用JAXR捕捉WebApplicationException   java Bloom着色器性能   java如何使活动保持活动状态,并每秒通知和运行   Java:是否替换ArrayList中不允许的ArrayList cos基元类型?   java Android Studio,使用PHP数据库文件中的GET用4个随机元素填充列表视图   java Antisamy 1.5.3跨度标记样式属性异常   java在构造函数调用之前或之后通过声明初始化类DS字段?   java从地址中删除重复字   java如何列出FloydWarshall算法中传递的顶点   java如何从不同的文件加载基于springboot的REST应用程序属性?   java HttpSession Url重写无法使用servlet技术正常工作   java为什么在代码中出现“无法创建组件”错误?