Как бы вы отформатировали длинную строку, такую как эта? Я хотел бы получить не более 80 символов в ширину:
logger.info("Skipping {0} because its thumbnail was already in our system as {1}.".format(line[indexes['url']], video.title))
Это мой лучший вариант?
url = "Skipping {0} because its thumbnail was already in our system as {1}."
logger.info(url.format(line[indexes['url']], video.title))
python
formatting
code-formatting
Gattster
источник
источник
indexes
: Правильное множественное числоindex
естьindices
.Ответы:
Это начало. Неплохая практика - определять более длинные строки вне кода, который их использует. Это способ отделить данные и поведение. Ваш первый вариант - неявно соединять строковые литералы, делая их смежными:
Или с продолжением конца строки, которое немного более хрупко, так как это работает:
Но это не так:
Увидеть разницу? Нет? Ну, вы не будете, когда это ваш код тоже.
Недостатком неявного объединения является то, что оно работает только со строковыми литералами, а не со строками, взятыми из переменных, поэтому при рефакторинге все может стать немного сложнее. Кроме того, вы можете интерполировать только форматирование объединенной строки в целом.
Кроме того, вы можете присоединиться явно, используя оператор конкатенации (
+
):Явное лучше, чем неявное, как говорит дзен Python, но это создает три строки вместо одной и использует вдвое больше памяти: есть две написанные вами, плюс одна, которая является двумя из них, соединенными вместе, так что вы Нужно знать, когда игнорировать дзен. Положительным моментом является то, что вы можете применять форматирование к любой из подстрок отдельно в каждой строке или ко всей партии вне скобок.
Наконец, вы можете использовать строки в тройных кавычках:
Это часто мой фаворит, хотя его поведение немного отличается, так как перевод строки и любые пробелы в последующих строках будут отображаться в вашей последней строке. Вы можете устранить новую строку с помощью обратной косой черты.
Это имеет ту же проблему, что и та же техника, описанная выше, в том, что правильный код отличается от неправильного кода только невидимым пробелом.
Какой из них «лучший», зависит от вашей конкретной ситуации, но ответ не просто эстетический, но один из слегка отличающихся поведений.
источник
'
чтобы содержать эту строку, или избегать двойных кавычек внутри вашей строки, или использовать тройные двойные кавычки"""
. Проблема со строками в кавычках, содержащими кавычки, одинакова, независимо от того, используете ли вы одну или несколько строк для определения литеральной строки.+
.Последовательные строковые литералы объединяются компилятором, а выражения в скобках считаются одной строкой кода:
источник
Лично мне не нравится вешать открытые блоки, поэтому я отформатировал бы это как:
В общем, я бы не стал слишком усердно бороться, чтобы код точно вписался в строку из 80 столбцов. Стоит сохранить длину линии до разумного уровня, но жесткий предел 80 остается в прошлом.
источник
Вы можете использовать модуль textwrap, чтобы разбить его на несколько строк
Из документации :
источник
Для тех, кто также пытается вызвать
.format()
длинную строку и не может использовать некоторые из самых популярных методов переноса строк, не прерывая последующий.format(
вызов, вы можете сделать этоstr.format("", 1, 2)
вместо"".format(1, 2)
. Это позволяет вам разрывать строку с любой техникой, которая вам нравится. Например:возможно
В противном случае единственная возможность - использовать продолжения конца строки, которыми я лично не являюсь поклонником.
источник