Как сделать перевод строки (продолжение строки) в Python?

У меня есть длинная строка кода, которую я хочу разбить на несколько строк. Что мне использовать и каков синтаксис?

Например, добавить кучу строк,

e = 'a' + 'b' + 'c' + 'd'

и расположить ее в двух строках следующим образом:

e = 'a' + 'b' +
    'c' + 'd'
Решение

Что такое строка? Вы можете просто располагать аргументы на следующей строке без каких-либо проблем:

a = dostuff(blahblah1, blahblah2, blahblah3, blahblah4, blahblah5, 
            blahblah6, blahblah7)

В противном случае вы можете сделать что-то вроде этого:

if a == True and \
   b == False

Для получения дополнительной информации обратитесь к руководству по стилю.

Из вашего примера строки:

a = '1' + '2' + '3' + \
    '4' + '5'

Или:

a = ('1' + '2' + '3' +
    '4' + '5')

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

Комментарии (16)

С ОПТОСОЗ 8 -- руководство по стилю для Python код:

&ГТ; предпочтительный способ заворачивания длинных линиях с использованием Python's не подразумевает продолжения строки внутри скобок, скобки и фигурные скобки. Длинные строки могут быть разбиты на несколько строк путем заключения выражения в скобки. Они должны использоваться в предпочтении к помощью обратной косой черты для продолжения линии.

&ГТ; обратные слеши-прежнему могут быть полезны в разы. Например, длинные, несколько с-операторы не могут использовать неявное продолжение, так что обратные косые черты допускается:

&ГТ; с открытыми('/путь/к/некоторые/файл/вы/хотите/чтобы/читать') как file_1, \ открыть('/путь/к/некоторые/файл/время/написали', 'ш') как file_2: file_2.писать(file_1.читать())

&ГТ; другой такой случай с assert заявления.

&ГТ; убедитесь, что отступ надлежащим образом продолжил линию. Предпочитаемое место для отдыха на бинарный оператор после оператор, а не перед ним. Некоторые примеры:

&ГТ; класс прямоугольник(большой двоичный объект): &ГТ; деф инит(самостоятельная, ширина, высота, цвет='черного' акцент=нет, выделить=0): если (ширина == 0 и height == 0 и цвет == 'красный' и акцент == 'сильным' или выделите &ГТ; 100): поднять ValueError (на"К сожалению, вы теряете и quot;) если width == 0 и height == 0 и (цвет == 'красный' или акцент нет): поднять ValueError("Я не'т так думаю -- значения %я ы, %ы&; % (ширина, высота)) Blob-объекта.инит(самостоятельная, ширина, высота, цвета, акценты, подчеркнуть)

Теперь PEP8 рекомендует напротив конвенции (для взлома на бинарных операций) используется математиками и их издатели, чтобы улучшить читаемость.

Дональд Кнут's стиль пробития до бинарный оператор выравнивает операторов по вертикали, тем самым уменьшая глаз'ы нагрузки при определении того, какие элементы добавляются и отнимаются.

От PEP8: если разрыв строки до или после бинарного оператора?:

&ГТ; Дональд Кнут объясняет традиционную норму в своих компьютерах и верстка серии: "и хотя формулы в пункте всегда после бинарных операций и отношений, отображаемых формулами всегда перед бинарные операции" в[3].

&ГТ; по традиции от математики обычно приводит к более читабельный код:

&ГТ; # Да: легко подобрать операторы с операндами доход = (gross_wages

  • taxable_interest
  • (дивиденды - qualified_dividends)
  • ira_deduction
  • student_loan_interest)

В Python код, то разрешается до или после бинарного оператора, так долго, как Конвенция согласуется на местном уровне. Для нового кода кнут's стиль предложил.

[3]: Дональд Кнут'ы TeXBook, стр. 195 и 196

Комментарии (5)

Опасность, используя обратную косую черту в конце строки, если пробел будет добавлен после обратной косой черты (которые, конечно, очень трудно увидеть), обратная косая черта больше не делать то, что ты подумала.

Смотрите на Python идиомы и анти-идиом (для питон 2 или питон 3) для более.

Комментарии (1)

Вы можете разбить строки между круглых скобок и брекетов. Кроме того, вы можете дополнить обратной косой черты \ на линии, чтобы четко разбить его:

x = (tuples_first_value,
     second_value)
y = 1 + \
    2
Комментарии (0)

Поставьте \ в конце строки или заключите высказывание в паренсы ( ... ). Из IBM:

b = ((i1 < 20) and
     (i2 < 30) and
     (i3 < 40))

или

b = (i1 < 20) and \
    (i2 < 30) and \
    (i3 < 40)
Комментарии (0)

From the horse's mouth: Explicit line присоединение

Две или более физических линий могут быть объединены в логические линии с помощью символов обратной косой черты (\), следующим образом: когда физическая строка заканчивается на > обратную косую черту. обратной косой чертой, которая не является частью строки литерала или комментария, она соединяется с последующими, образуя одну логическую строку, удаляя обратную косую черту и следующий символ конца строки. Для пример:

если 1900 < год < 2100 и 1 не продолжает лексему, за исключением строковых литералов (т.е. лексемы, отличные от строковых литералов, не могут быть разделены по физические строки с помощью обратной косой черты). A обратная косая черта является недопустимой в любом другом месте на > строке вне строкового литерала. строке вне строкового литерала.

Комментарии (1)

Это не может быть подходящие для Python способ, но я обычно используют список с функции join для того, чтобы записать длинную строку, как SQL-запросы:

query = " ".join([
    'SELECT * FROM "TableName"',
    'WHERE "SomeColumn1"=VALUE',
    'ORDER BY "SomeColumn2"',
    'LIMIT 5;'
])
Комментарии (0)

Взято с автостопом's руководство на Python (продолжение линии):

&ГТ; когда логическая строка кода превышает допустимый предел, нужно разбить его на несколько физических строк. Интерпретатор Python будет вступать в последовательных строках, если последний символ строки обратную косую черту. Это полезно в некоторых случаях, но, как правило, следует избегать из-за своей хрупкости: пробел, добавленные в конец строки, после обратной косой черты, порвет код и может иметь неожиданные результаты.

&ГТ; лучшее решение-это использовать круглые скобки вокруг элементов. В скобках незакрытые на конец строки интерпретатор Python будет присоединиться к следующей строке, пока скобки закрыты. Такое же поведение имеет место для фигурных и квадратных скобок.

&ГТ; однако, более часто чем не, того, чтобы разделить длинную логическую линию-это признак, что вы пытаетесь сделать слишком много вещей одновременно, что может затруднять читабельности.

Имея, что сказал, Здесь'ы например, учитывая многократный импорт (при превышении линия границы, определенные на Пеп-8), также применяется для строки в целом:

from app import (
    app, abort, make_response, redirect, render_template, request, session
)
Комментарии (0)