Как записать очень длинную строку, которая соответствует PEP8, и предотвратите E501

переименуйте

Пример:

$ ls
this_has_text_to_find_1.txt
this_has_text_to_find_2.txt
this_has_text_to_find_3.txt
this_has_text_to_find_4.txt

$ rename 's/text_to_find/been_renamed/' *.txt
$ ls
this_has_been_renamed_1.txt
this_has_been_renamed_2.txt
this_has_been_renamed_3.txt
this_has_been_renamed_4.txt

Так полезный

182
задан Braiam 15 January 2017 в 08:14
поделиться

6 ответов

Неявная конкатенация может быть самым чистым решением:

s = "this is my really, really, really, really, really, really," \
    " really long string that I'd like to shorten."

Edit Поразмыслив, я согласен с тем, что предложение Тодда использовать скобки, а не продолжение строки, лучше по всем причинам, которые он приводит. Единственное, что я сомневаюсь, это то, что относительно легко спутать заключенные в скобки строки с кортежами.

103
ответ дан 23 November 2019 в 06:05
поделиться

Я думаю, что самым важным словом в вашем вопросе было «предлагает».

Стандарты кодирования - забавная штука. Часто предоставляемые ими рекомендации имеют действительно хорошую основу на момент написания (например, большинство терминалов не могут отображать> 80 символов в строке), но со временем они становятся функционально устаревшими, но по-прежнему неукоснительно соблюдаются. Я полагаю, что вам нужно здесь взвесить относительные достоинства "нарушения" этого конкретного предложения по сравнению с удобочитаемостью и поддерживаемостью вашего кода.

Извините, это не дает прямого ответа на ваш вопрос.

15
ответ дан 23 November 2019 в 06:05
поделиться

Обратная косая черта:

s = "this is my really, really, really, really, really, really" +  \
    "really long string that I'd like to shorten."

или заключить в скобки:

s = ("this is my really, really, really, really, really, really" + 
    "really long string that I'd like to shorten.")
3
ответ дан 23 November 2019 в 06:05
поделиться

Кроме того, поскольку соседние строковые константы объединяются автоматически, вы также можете закодировать это так:

s = ("this is my really, really, really, really, really, really, "  
     "really long string that I'd like to shorten.")

Обратите внимание на отсутствие знака плюса, и я добавил дополнительную запятую и пробел, следующие за форматированием вашего пример.

Лично мне не нравится обратная косая черта, и я помню, как где-то читал, что ее использование на самом деле не рекомендуется в пользу этой формы, которая является более явной. Помните: «Явное лучше, чем неявное»

Я считаю, что обратная косая черта менее четкая и менее полезная, потому что это фактически экранирование символа новой строки. Невозможно поставить после него комментарий в конце строки, если он необходим. Это можно сделать с помощью конкатенированных строковых констант:

s = ("this is my really, really, really, really, really, really, " # comments ok
     "really long string that I'd like to shorten.")

Я использовал поиск в Google по запросу «длина строки Python», который возвращает ссылку PEP8 в качестве первого результата,

270
ответ дан 23 November 2019 в 06:05
поделиться

Вы потеряли пробел, и вам, вероятно, нужен символ продолжения строки, т.е. a \ .

s = "this is my really, really, really, really, really, really" +  \
    " really long string that I'd like to shorten."

или даже:

s = "this is my really, really, really, really, really, really"  \
    " really long string that I'd like to shorten."

Родители также будут работать вместо продолжения строки, но вы рискуете, что кто-то подумает, что вы намереваетесь создать кортеж и только что забыли запятую. Возьмем, к примеру:

s = ("this is my really, really, really, really, really, really"
    " really long string that I'd like to shorten.")

против:

s = ("this is my really, really, really, really, really, really",
    " really long string that I'd like to shorten.")

С динамической типизацией Python код может работать в любом случае, но давать неверные результаты с тем, что вы не планировали.

13
ответ дан 23 November 2019 в 06:05
поделиться

С помощью \ вы можете расширить операторы до нескольких строк:

s = "this is my really, really, really, really, really, really" + \
"really long string that I'd like to shorten."

должно работать.

0
ответ дан 23 November 2019 в 06:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: