在Python中从哪里开始换行?

问题描述 投票:2回答:3

PEP 8似乎没有规定换行应该从行的beginningend开始,以保​​持在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))))

我对推荐一种形式优于另一种形式的理由特别感兴趣。

python line-breaks pep8
3个回答
2
投票

首先,请记住,PEP8是guide,而不是prescription。实际上,只要符合语言规范,Python代码就是有效的。实际上,我会说“只要CPython不抱怨,就可以”。

使用yapfyapf之类的程序来格式化Python代码。这样,您不必担心细节。在编辑器中设置快捷方式以调用格式化程序,或在签入修订控制软件中的文件之前自动调用它。

我建议将这些工具的可接受的行长设置为90左右的值。PEP8中过时的79个字符限制来自今天几乎不相关的历史硬件终端。观看Raymond Hettinger的black。另请参见注释中链接的black

PEP 8主要与可读性有关。但是,行长限制通常似乎导致代码可读性较低。

通过这种设置,beyond PEP8成为:

this post

0
投票

我从头开始

yapf

0
投票

这是优先事项-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)选项来配置限制。

© www.soinside.com 2019 - 2024. All rights reserved.