Стиль Python - продолжение строки со строками?
При попытке подчиниться правилам стиля python я установил мои редакторы максимум 79 столбцов.
В PEP он рекомендует использовать подразумеваемое продолжение python в скобках, скобках и фигурных скобках. Однако, когда речь идет о строках, когда я нажимаю лимит col, он становится немного странным.
Например, пытаясь использовать многострочный
mystr = """Why, hello there
wonderful stackoverflow people!"""
Вернет
"Why, hello there\nwonderful stackoverflow people!"
Это работает:
mystr = "Why, hello there \
wonderful stackoverflow people!"
Так как он возвращает это:
"Why, hello there wonderful stackoverflow people!"
Но, когда инструкция имеет отступ в несколько блоков, это выглядит странно:
do stuff:
and more stuff:
and even some more stuff:
mystr = "Why, hello there \
wonderful stackoverflow people!"
Если вы попробуете и отпустите вторую строку:
do stuff:
and more stuff:
and even some more stuff:
mystr = "Why, hello there \
wonderful stackoverflow people!"
Ваша строка заканчивается как:
"Why, hello there wonderful stackoverflow people!"
Единственный способ, который я нашел, чтобы обойти это:
do stuff:
and more stuff:
and even some more stuff:
mystr = "Why, hello there" \
"wonderful stackoverflow people!"
Что мне нравится лучше, но также несколько непросто на глазах, так как похоже, что в середине нигде нет нитки. Это приведет к правильному:
"Why, hello there wonderful stackoverflow people!"
Итак, мой вопрос: какие рекомендации для людей о том, как это сделать, и есть ли что-то, что мне не хватает в руководстве по стилю, которое показывает, как я должен это делать?
Спасибо.
Ответы
Ответ 1
Так как смежные строковые литералы автоматически объединены в одну строку, вы можете просто использовать подразумеваемое продолжение строки в круглых скобках, как рекомендовано PEP 8:
print("Why, hello there wonderful "
"stackoverflow people!")
Ответ 2
Просто указывая, что это использование круглых скобок, которые вызывают автоконкатенацию. Это прекрасно, если вы уже используете их в заявлении. В противном случае я просто использовал бы "\", а не вставлял круглые скобки (это то, что большинство IDE делают для вас автоматически). Отступ должен выровнять продолжение строки, чтобы он соответствовал PEP8. Например:.
my_string = "The quick brown dog " \
"jumped over the lazy fox"
Ответ 3
Другая возможность - использовать модуль textwrap. Это также позволяет избежать проблемы "строки, просто сидящей посередине нигде", как указано в вопросе.
import textwrap
mystr = """\
Why, hello there
wonderful stackoverfow people"""
print (textwrap.fill(textwrap.dedent(mystr)))
Ответ 4
Я обошел это с помощью
mystr = ' '.join(
["Why, hello there",
"wonderful stackoverflow people!"])
в прошлом. Это не идеально, но он отлично работает для очень длинных строк, которые не должны иметь разрывов строк в них.
Ответ 5
Это довольно чистый способ сделать это:
myStr = ("firstPartOfMyString"+
"secondPartOfMyString"+
"thirdPartOfMyString")