Python arg和kwargs在实践中有没有其他名称?

2024-10-01 15:29:09 发布

您现在位置:Python中文网/ 问答频道 /正文

Python不限制参数的名称,但是有些参数名称严格受约定控制,例如selfclsargs和{}。名字self和{}总是代表同一个概念,所以在这些情况下,我很难找到一个令人信服的理由让人偏离惯例。但是,对于args和{},我发现这种命名约定令人窒息。在

假设我有一个类,它有各种属性,可以通过将kwargs传递给它的构造函数来设置:

class MyObj:
    def __init__(self, **kwargs):
        for propname in kwargs:
            self.set_property(propname, kwargs[propname])

在这种情况下,kwargs只打算作为该类的实例的可设置属性,因此对我来说,写下定义是有意义的:

^{pr2}$

这样,只需查看方法的签名就可以了解kwargs的用途。在

总的来说,我认为惯例是件好事。然而,在我看来,总是使用args和{}是一个错过的机会,无法向API的用户传达关于函数/方法的参数和kwarg的性质的有用信息。毕竟,单星号或双星号的存在已经清楚地表明它们是未命名或命名的参数。在

有没有人有在现实世界中多开发人员代码中使用arg和kwarg的替代名称的例子,或者为这些构造使用其他变量名是否有违格调?在

如果不使用这些传统的名字真的是一个可怕的想法,那是什么原因呢?在


Tags: 方法self名称参数属性情况args代表
1条回答
网友
1楼 · 发布于 2024-10-01 15:29:09

我不认为有任何理由反对使用上下文特定的名称,例如。。。在

my_sum(*numbers)my_parser(*strings, **flags)

^{}文档说*objects。在

^{}文档说*iterables。在

^{}在文档和docstring中使用*iterables。在

>>> from itertools import chain
>>> chain.__doc__.splitlines()[0]
'chain(*iterables)  > chain object'

^{}在文档和__init__中使用*maps。在

^{pr2}$

请随意寻找更多的例子。在

相关问题 更多 >

    热门问题