Как PEP8 предлагает придерживаться правила 80 столбцов для вашей программы на Python, как я могу соблюдать это с длинными строками, т.е.
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."
Кроме того, поскольку соседние строковые константы автоматически объединяются, вы также можете кодировать это так:
Обратите внимание, нет знака плюс, и я добавил дополнительные запятую и пробел, который следует за форматированием вашего примера.
Лично мне не нравятся обратные слеши, и я вспоминаю, что читал где-то, что его использование на самом деле не рекомендуется в пользу этой формы, которая более явна Помните: «Явное лучше, чем неявное».
Я считаю, что обратный слеш менее понятен и менее полезен, потому что на самом деле он экранирует символ новой строки. Нельзя ставить комментарий в конце строки после него, если это необходимо. Это можно сделать с помощью константных строковых констант:
Я использовал поиск Google «длина строки python», который возвращает ссылку PEP8 в качестве первого результата, а также ссылки на другой хороший пост StackOverflow на эту тему: « Почему Python PEP-8 должен указывать максимальную длину строки в 79 символов? »
Другой хорошей поисковой фразой будет «продолжение строки Python».
источник
"str1" + "str2"
а не"str1" "str2"
('this is my really, really, really, really, really long {} ' 'that I'd really, really, really, like to {}').format(var1, var2))
Я думаю, что самым важным словом в вашем вопросе было «предлагает».
Стандарты кодирования это забавные вещи. Часто руководство, которое они предоставляют, имеет действительно хорошую основу, когда оно было написано (например, большинство терминалов не могут отображать> 80 символов в строке), но со временем они становятся функционально устаревшими, но при этом строго соблюдаются. Я думаю, что вам нужно сделать здесь, взвесить относительные достоинства «ломки» этого конкретного предложения по сравнению с читабельностью и удобством сопровождения вашего кода.
Извините, это не дает прямого ответа на ваш вопрос.
источник
Вы потеряли пробел, и вам, вероятно, нужен символ продолжения строки, т.е. а
\
.или даже:
Паренс также работал бы вместо продолжения строки, но вы рискуете, что кто-то думает, что вы хотели бы иметь кортеж и только что забыли запятую. Взять например:
против:
При динамической типизации Python код может выполняться в любом случае, но давать неверные результаты с тем, который вы не предполагали.
источник
Backslash:
или завернуть в паренс:
источник
Все это отличные ответы, но я не смог найти плагин редактора, который бы помог мне с редактированием «неявно сцепленных» строк, поэтому я написал пакет, чтобы мне было проще.
На pip (установите параграфы), если кто-то блуждает по этой старой теме, хотел бы проверить это. Форматирует многострочные строки так, как это делает html (сжимает пробел, две строки для нового абзаца, не заботясь о пробелах между строками).
становится ...
Все легко выстраивается с (Vim) 'gq'
источник
С помощью
\
вы можете расширить операторы до нескольких строк:должно сработать.
источник
Я склонен использовать несколько методов, не упомянутых здесь, для указания больших строк, но это для очень специфических сценариев. YMMV ...
Многострочные фрагменты текста, часто с отформатированными токенами (не совсем то, что вы просили, но все же полезно):
Выращивайте переменную по частям с помощью любого метода интерполяции строк, который вы предпочитаете:
Прочитайте это из файла. PEP-8 не ограничивает длину строк в файле; только строки вашего кода. :)
Используйте brute-force или ваш редактор, чтобы разбить строку на управляемые строки, используя новые строки, а затем удалите все новые строки. (Аналогично первой технике, которую я перечислил):
источник
Доступные Варианты:
"foo" \ "bar"
"foo" + \ "bar"
("foo" "bar")
("foo" + "bar")
Избегайте
Избегайте скобок с запятой:
("foo", "bar")
которая определяет кортеж.источник
Если вы должны вставить длинный строковый литерал и хотите, чтобы flake8 закрывался, вы можете использовать его директивы закрывания . Например, в процедуре тестирования я определил некоторые ложные входные данные CSV. Я обнаружил, что разделение его на несколько строк, которые содержат строки, может быть очень запутанным, поэтому я решил добавить
# noqa: E501
следующее:источник
Я использовал textwrap.dedent в прошлом. Это немного громоздко, поэтому я предпочитаю продолжения строки сейчас, но если вы действительно хотите отступ блока, я думаю, что это здорово.
Пример кода (где обрезка избавляет от первого '\ n' срезом):
Объяснение:
dedent вычисляет отступ на основе пробела в первой строке текста перед новой строкой. Если вы хотите настроить его, вы можете легко переопределить его, используя
re
модуля.Этот метод имеет ограничения в том, что очень длинные строки могут быть длиннее, чем вы хотите, в этом случае другие методы, которые объединяют строки, являются более подходящими.
источник
x[1:]
вы можете поставить обратную косую черту после,x = """
чтобы избежать первой новой строки.