Можно ли разбить длинную строку на несколько строк в Python
Как и C, вы можете разбить длинную строку на несколько коротких. Но в Python, если я сделаю это, будет ошибка отступа... Возможно ли это?
7 ответов
Из PEP 8 - Руководство по стилю для кода Python:
Предпочтительным способом переноса длинных строк является использование подразумеваемого продолжения строки в Python внутри скобок, скобок и скобок. При необходимости вы можете добавить дополнительную пару скобок вокруг выражения, но иногда использование обратной косой черты выглядит лучше. Удостоверьтесь, чтобы сделать отступ для продолжения строки соответствующим образом.
Пример неявного продолжения строки:
a = some_function(
'1' + '2' + '3' - '4')
Что касается разрыва строки вокруг бинарного оператора, то он говорит:
В течение десятилетий рекомендуемый стиль должен был нарушать после бинарных операторов. Но это может повредить читаемости двумя способами: операторы, как правило, разбросаны по разным столбцам на экране, и каждый оператор перемещается от своего операнда к предыдущей строке.
В коде Python допускается разрыв до или после двоичного оператора, если соглашение согласовано локально. Для нового кода предлагается стиль Кнута (разрывы строк перед оператором).
Пример явного продолжения строки:
a = '1' \
+ '2' \
+ '3' \
- '4'
Существует несколько способов сделать это.
1). Длинное заявление:
>>> def print_something():
print 'This is a really long line,', \
'but we can make it across multiple lines.'
2). Используя круглые скобки:
>>> def print_something():
print ('Wow, this also works?',
'I never knew!')
3). С помощью \
снова:
>>> x = 10
>>> if x == 10 or x > 0 or \
x < 100:
print 'True'
Цитируя PEP8:
Предпочтительным способом переноса длинных строк является использование подразумеваемого продолжения строки в Python внутри скобок, скобок и скобок. При необходимости вы можете добавить дополнительную пару скобок вокруг выражения, но иногда использование обратной косой черты выглядит лучше. Удостоверьтесь, чтобы сделать отступ для продолжения строки соответствующим образом. Предпочтительное место для бинарного оператора - после оператора, а не перед ним.
Если вы хотите назначить длинную строку переменной, вы можете сделать это следующим образом:
net_weights_pathname = (
'/home/acgtyrant/BigDatas/'
'model_configs/lenet_iter_10000.caffemodel')
Не добавляйте запятую, иначе вы получите кортеж, содержащий много строк!
При попытке ввести непрерывный текст (скажем, запрос) не ставьте запятые в конце строки, иначе вы получите список строк вместо одной длинной строки:
queryText= "SELECT * FROM TABLE1 AS T1"\
"JOIN TABLE2 AS T2 ON T1.SOMETHING = T2.SOMETHING"\
"JOIN TABLE3 AS T3 ON T3.SOMETHING = T2.SOMETHING"\
"WHERE SOMETHING BETWEEN <WHATEVER> AND <WHATEVER ELSE>"\
"ORDER BY WHATEVERS DESC"
вроде как.
Есть такой комментарий от acgtyrant
извините, не видел этого.:/
Код, связанный с БД, выглядит проще на глазах в нескольких строках, заключенных в пару тройных кавычек:
SQL = """SELECT
id,
fld_1,
fld_2,
fld_3,
......
FROM some_tbl"""
чем следующая гигантская длинная линия:
SQL = "SELECT id, fld_1, fld_2, fld_3, .................................... FROM some_tbl"
Насколько я знаю, это можно сделать. Python имеет неявное продолжение строки (внутри скобок, скобок и строк) для строк с тройными кавычками ("""like this"""
) и отступ строк продолжения не важен. Для получения дополнительной информации, вы можете прочитать эту статью о лексическом анализе от python.org.