PEP 8似乎没有规定换行应该从行的beginning或end开始,以保持在79个字符的限制内。
例如,我应该在哪里中断这行?
long_function_name_1(long_function_name_2(long_function_name_3(long_function_name_4(args))))
从头开始?
long_function_name_1(
long_function_name_2(long_function_name_3(long_function_name_4(args))))
还是从头开始?
long_function_name_1(long_function_name_2(long_function_name_3(
long_function_name_4(args))))
我对推荐一种形式优于另一种形式的理由特别感兴趣。
首先,请记住,PEP8是guide,而不是prescription。实际上,只要符合语言规范,Python代码就是有效的。实际上,我会说“只要CPython不抱怨,就可以”。
使用yapf
或yapf
之类的程序来格式化Python代码。这样,您不必担心细节。在编辑器中设置快捷方式以调用格式化程序,或在签入修订控制软件中的文件之前自动调用它。
我建议将这些工具的可接受的行长设置为90左右的值。PEP8中过时的79个字符限制来自今天几乎不相关的历史硬件终端。观看Raymond Hettinger的black
。另请参见注释中链接的black
:
PEP 8主要与可读性有关。但是,行长限制通常似乎导致代码可读性较低。
通过这种设置,beyond PEP8成为:
this post
我从头开始
yapf
这是优先事项-PEP8将接受两者。当您需要执行多个换行符时,会出现差异-然后,每个后续换行符都应缩进relative到上述换行符:
long_function_name_1(
long_function_name_2(long_function_name_3(long_function_name_4(args)))
)
上面,选择可读性最高的那个-我会选择第二个。但是,此dosn't适用于列表推导:
long_function_name_1(
long_function_name_2(
long_function_name_3(
long_function_name_4(args))))
最后,79个字符不一定是最佳默认值-您可以通过在pep8脚本中添加long_function_name_1(
long_function_name_2(
long_function_name_3(long_function_name_4(args))))
# OR
long_function_name_1(long_function_name_2(
long_function_name_3(long_function_name_4(args))))
(例如90)选项来配置限制。