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_name
比very_long_variable_name = another_very_long_variable_name
更可读的very_long_variable_name = another_very_long_variable_name
。 这不是人们阅读的方式。 这是额外的认知负担,特别是在没有语法突出显示的情况下。
然而,有一个显着的好处。 如果遵守间隔规则,则使用工具更有效地search参数。
我认为这有几个原因,但我可能只是合理化:
- 它节省了空间,允许更多的函数定义和调用来适应一行,为参数名称本身节省更多的空间。
- 通过join每个关键字和值,您可以更容易地用逗号后面的空格分隔不同的参数。 这意味着您可以快速浏览您提供的参数。
- 语法与variables赋值不同,后者可能具有相同的名称。
- 此外,语法(甚至更多)不同于等式检查
a == b
,它也可以是调用中的有效expression式。