为什么关键字参数或默认参数值中“=”周围没有空格?

2024-05-20 20:41:53 发布

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

为什么PEP 8 recommend not having spaces around ^{} in a keyword argument or a default parameter value

这是否与Python代码中每次出现=时建议的空格不一致?

怎么样:

func(1, 2, very_long_variable_name=another_very_long_variable_name)

比:

func(1, 2, very_long_variable_name = another_very_long_variable_name)

如果您有任何关于Python的BDFL讨论/解释的链接,我们将不胜感激。

注意,这个问题更多的是关于kwargs而不是默认值,我只是使用了PEP 8中的短语。

我不是在征求意见。我在问这个决定背后的原因。这更像是问我为什么要在C程序中的{语句的同一行上使用if,而不是问我是否应该使用它。


Tags: nameinanothernotargumentvariablekeywordlong
3条回答

IMO省去了args的空间,为arg/值对提供了更清晰的可视分组;它看起来不那么杂乱无章。

我不会使用非常长的变量名作为默认参数。所以考虑一下:

func(1, 2, axis='x', angle=90, size=450, name='foo bar')

关于这个:

func(1, 2, axis = 'x', angle = 90, size = 450, name = 'foo bar')

另外,使用变量作为默认值也没有多大意义。也许有些常量变量(不是真正的常量),在这种情况下,我会使用全大写的名称,尽可能简短。所以没有其他的。。。

我想这是因为关键字参数和变量赋值本质上是不同的。

例如,有很多这样的代码:

kw1 = some_value
kw2 = some_value
kw3 = some_value
some_func(
    1,
    2,
    kw1=kw1,
    kw2=kw2,
    kw3=kw3)

如您所见,将一个变量赋给一个名为完全相同的关键字参数是完全有意义的,因此它提高了在没有空格的情况下查看它们的可读性。更容易识别的是,我们使用的是关键字参数,而不是给变量本身赋值。

此外,参数往往在同一行中,而赋值通常在各自的行中,因此节省空间可能是一个重要的问题。

相关问题 更多 >