Python的赋值对齐(样式)

bgu*_*ach 26 python coding-style pep8

我非常喜欢遵循PEP 8中指定的样式标准.我有一个自动检查它的linter,因此我的代码肯定更好.

在PEP 8中只有一点,E251和E221感觉不太好.来自JavaScript背景,我曾经将变量赋值对齐如下:

var var1        = 1234;
    var2        = 54;
    longer_name = 'hi';

var lol = {
    'that'        : 65,
    'those'       : 87,
    'other_thing' : true
};
Run Code Online (Sandbox Code Playgroud)

在我看来,这大大提高了可读性.问题是,PEP 8不推荐这样做.对于词典,并不是那么糟糕,因为在冒号后允许空格:

dictionary = {
   'something':        98,
   'some_other_thing': False
}
Run Code Online (Sandbox Code Playgroud)

我可以在没有对齐的情况下"生活"变量赋值,但我完全不喜欢的是不能在函数调用中传递命名参数,如下所示:

some_func(length=      40,
          weight=      900,
          lol=         'troll',
          useless_var= True,
          intelligence=None)
Run Code Online (Sandbox Code Playgroud)

所以,我最终做的是使用字典,如下所示:

specs = {
    'length':       40,
    'weight':       900,
    'lol':          'troll',
    'useless_var':  True,
    'intelligence': None
}

some_func(**specs)
Run Code Online (Sandbox Code Playgroud)

或者只是简单地

some_func(**{'length':       40,
             'weight':       900,
             'lol':          'troll',
             'useless_var':  True,
             'intelligence': None})
Run Code Online (Sandbox Code Playgroud)

但我觉得这个工作比忽略PEP 8 E251/E221更糟糕.

什么是最佳做法?

多年后编辑

不要对齐.迟早会出现一个更长的新变量,你必须在这里和那里停留一段时间,直到一切看起来都很好.不值得.

acj*_*jay 17

最佳实践是主观的,但最常见的做法是坚持PEP8.

我绝对不建议每次要使用命名参数调用函数时创建字典.那太浪费了.我不明白为什么你的原始some_func电话不起作用.如果它们变得太长而且不实用,我肯定会将我的函数调用分解为行.但我没有调整它们.我认为推荐的原因是因为随着时间的推移正确地保持所有间距会变得非常痛苦,并且共识是对可靠性的可维护性的可维护性.

如果你正在处理你自己的代码,那就干掉吧,谁在乎呢?PEP8是一个指导原则,而不是法律.

  • 您在某些方面是对的,但是……幸运的是,我的 IDE 会根据特殊字符“:”、“=”等自动对齐。保持它“漂亮”根本不需要任何时间。对我来说,维护也是关于快速和舒适的阅读。 (2认同)