Стиль 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!"

Итак, мой вопрос: какие рекомендации для людей о том, как это сделать, и есть ли что-то, что мне не хватает в руководстве по стилю, которое показывает, как я должен это делать?

Спасибо.

Ответ 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")