PEP 8,为什么在关键字参数或默认参数值的'='周围没有空格?

为什么PEP 8build议在关键字参数或默认参数值中不要有空格=

这与推荐在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程序中使用{在同一行上,而不是我是否应该使用它。

我想这是因为关键字参数本质上不同于variables赋值。

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

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

正如你所看到的,把一个variables分配给一个完全相同的关键字参数是完全有意义的,所以它提高了可读性,以便在没有空格的情况下查看它们。 我们更容易认识到我们正在使用关键字参数,而不是为自己分配一个variables。

另外,参数往往在同一行,而分配通常是在他们自己的行中,所以节省空间可能是一个重要的问题。

我不会使用very_long_variable_name作为默认参数。 所以考虑一下:

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

在此:

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

另外,使用variables作为默认值没有什么意义。 也许有一些常量variables(这并不是真正的常量),在这种情况下,我会使用全部大写的名字,描述性的尽可能短。 所以没有another_very _…

国际海事组织(IMO)放弃参数空间可以提供更清晰的arg / value对的可视化分组; 它看起来不那么混乱。

有利弊。

我非常不喜欢PEP8兼容代码如何读取。 我不想买入very_long_variable_name=another_very_long_variable_namevery_long_variable_name = another_very_long_variable_name更可读的very_long_variable_name = another_very_long_variable_name 。 这不是人们阅读的方式。 这是额外的认知负担,特别是在没有语法突出显示的情况下。

然而,有一个显着的好处。 如果遵守间隔规则,则使用工具更有效地search参数。

我认为这有几个原因,但我可能只是合理化:

  1. 它节省了空间,允许更多的函数定义和调用来适应一行,为参数名称本身节省更多的空间。
  2. 通过join每个关键字和值,您可以更容易地用逗号后面的空格分隔不同的参数。 这意味着您可以快速浏览您提供的参数。
  3. 语法与variables赋值不同,后者可能具有相同的名称。
  4. 此外,语法(甚至更多)不同于等式检查a == b ,它也可以是调用中的有效expression式。