С чего начать перенос строки в Python? - PullRequest
3 голосов
/ 29 сентября 2019

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))))))))

Меня особенно интересует обоснование рекомендации одной формы над другой.

Ответы [ 2 ]

4 голосов
/ 29 сентября 2019

Во-первых, имейте в виду, что PEP8 является руководством , а не рецептом . Практически говоря код Python действителен, если он соответствует спецификации языка. На практике я бы сказал: «Пока CPython не жалуется, все в порядке».

Используйте такую ​​программу, как yapf или black, чтобыотформатируйте ваш код Python. Таким образом, вам не нужно беспокоиться о деталях. Установите в своем редакторе ярлык для вызова средства форматирования или вызовите его автоматически, прежде чем проверять файл в программном обеспечении для управления версиями.

Я бы предложил установить допустимую длину строки для этих инструментов на значение около 90Устаревшее ограничение в 79 символов в PEP8 происходит из-за мониторов с низким разрешением (и возвращаясь к аппаратным терминалам и телетайпам), которые вряд ли актуальны сегодня. Строгое соблюдение этого ограничения в современном коде Python с использованием списков и f-строк может сделать ваш код менее читабельным. Наблюдайте за Рэймондом Хеттингером вне PEP8 . См. Также его пост , который был связан в комментариях:

PEP 8 в основном о читабельности. Тем не менее, ограничение длины строки часто кажется менее читаемым кодом.

При таких настройках yapf превращает его в:

long_function_name_1(
    long_function_name_2(long_function_name_3(long_function_name_4(args)))
)
2 голосов
/ 29 сентября 2019

Я иду с начала

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

Отступы дают понять, какая функция принимает что. Если аргументов более одного, они образуют «столбец» (в этом случае было бы лучше перенести завершающую скобку и на новую строку).

...