У меня есть длинная строка кода, которую я хочу разбить на несколько строк. Что мне использовать и каков синтаксис?
Например, добавить кучу строк,
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')
Обратите внимание, что в руководстве по стилю сказано, что использование неявного продолжения со скобками предпочтительнее, но в данном конкретном случае просто добавление скобок вокруг вашего выражения, вероятно, неверный путь.
С ОПТОСОЗ 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
В Python код, то разрешается до или после бинарного оператора, так долго, как Конвенция согласуется на местном уровне. Для нового кода кнут's стиль предложил.
[3]: Дональд Кнут'ы TeXBook, стр. 195 и 196
Вы можете разбить строки между круглых скобок и брекетов. Кроме того, вы можете дополнить обратной косой черты \
на линии, чтобы четко разбить его:
x = (tuples_first_value,
second_value)
y = 1 + \
2
From the horse's mouth: Explicit line присоединение
Две или более физических линий могут быть объединены в логические линии с помощью символов обратной косой черты (
\
), следующим образом: когда физическая строка заканчивается на > обратную косую черту. обратной косой чертой, которая не является частью строки литерала или комментария, она соединяется с последующими, образуя одну логическую строку, удаляя обратную косую черту и следующий символ конца строки. Для пример:если 1900 < год < 2100 и 1 <= месяц <= 12 \ и 1 <= день <= 31 и 0 <= час <24 \ и 0 <= минута < 60 и 0 <= секунда < 60: # Похоже на действительную дату return 1
Строка, заканчивающаяся обратной косой чертой, не может >. содержать комментарий. Обратная косая черта не продолжать комментарий. Обратная косая черта не не продолжает лексему, за исключением строковых литералов (т.е. лексемы, отличные от строковых литералов, не могут быть разделены по физические строки с помощью обратной косой черты). A обратная косая черта является недопустимой в любом другом месте на > строке вне строкового литерала. строке вне строкового литерала.
Это не может быть подходящие для Python способ, но я обычно используют список с функции join для того, чтобы записать длинную строку, как SQL-запросы:
query = " ".join([
'SELECT * FROM "TableName"',
'WHERE "SomeColumn1"=VALUE',
'ORDER BY "SomeColumn2"',
'LIMIT 5;'
])
Взято с автостопом's руководство на Python (продолжение линии):
&ГТ; когда логическая строка кода превышает допустимый предел, нужно разбить его на несколько физических строк. Интерпретатор Python будет вступать в последовательных строках, если последний символ строки обратную косую черту. Это полезно в некоторых случаях, но, как правило, следует избегать из-за своей хрупкости: пробел, добавленные в конец строки, после обратной косой черты, порвет код и может иметь неожиданные результаты.
&ГТ; лучшее решение-это использовать круглые скобки вокруг элементов. В скобках незакрытые на конец строки интерпретатор Python будет присоединиться к следующей строке, пока скобки закрыты. Такое же поведение имеет место для фигурных и квадратных скобок.
&ГТ; однако, более часто чем не, того, чтобы разделить длинную логическую линию-это признак, что вы пытаетесь сделать слишком много вещей одновременно, что может затруднять читабельности.
Имея, что сказал, Здесь'ы например, учитывая многократный импорт (при превышении линия границы, определенные на Пеп-8), также применяется для строки в целом:
from app import (
app, abort, make_response, redirect, render_template, request, session
)