python - 在 Python 中从哪里开始换行?

标签 python line-breaks pep8

PEP 8似乎没有规定换行应该从行的开头还是从结尾开始,以保​​持在 79 个字符的限制内。

例如我应该在哪里打破这条线?

long_function_name_1(long_function_name_2(long_function_name_3(long_function_name_4(long_function_name_5(long_function_name_6(long_function_name_7(long_function_name_8(args))))))))

从一开始?

long_function_name_1(
    long_function_name_2(
        long_function_name_3(
            long_function_name_4(
                long_function_name_5(
                    long_function_name_6(
                        long_function_name_7(long_function_name_8(args))))))))

还是从头开始?

long_function_name_1(long_function_name_2(long_function_name_3(
    long_function_name_4(long_function_name_5(long_function_name_6(
        long_function_name_7(long_function_name_8(args))))))))

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

最佳答案

首先,请记住 PEP8 是指南,而不是处方。实际上,只要符合语言规范,Python 代码就是有效的。实际上,我会说“只要 CPython 不报错,就没问题”。

使用类似 yapf 的程序或 black格式化你的 Python 代码。这样你就不用担心细节了。在您的编辑器中设置一个快捷方式来调用格式化程序,或者在您在修订控制软件中 checkin 文件之前自动调用它。

我建议将这些工具可接受的行长度设置为 90 左右的值。PEP8 中过时的 79 个字符限制来自低分辨率监视器(并返回到硬件终端和电传打字机),这在今天几乎不相关。在具有列表理解和 f 字符串的现代 Python 代码中严格遵守这一限制实际上可以使您的代码不那么可读。观看 Raymond Hettinger 的 beyond PEP8 .另见 his post在评论中链接:

PEP 8 is mostly about readability. However, the line length limit often seems to cause less readable code.

有了这样的设置,yapf 就变成了:

long_function_name_1(
    long_function_name_2(long_function_name_3(long_function_name_4(args)))
)

关于python - 在 Python 中从哪里开始换行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58156936/

相关文章:

python - 自动格式化 Python 注释

python - 在虚拟环境中安装 ipython

python - 在 Python 2.7 中使用 re.sub 时出现错误 "unmatched group"

python - 在 TensorFlow 中读取 `tf.train.shuffle_batch` 文件时 `TFRecord` 崩溃

html - 什么是正常的 HTML 换行行为?

php - 带换行符的正则表达式 preg_match

python - Autopep8 不会打破长注释行?

python - 从 Dataframe 获取数据并将其传递到一个新的空 DataFrame

line-breaks - 如何在 MathML 中换行?

python "if len(A) is not 0"与 "if A"语句