Python: Multi-line строки
Иногда текст в программе должен состоять из нескольких строк. Например, при генерации письма, создании шаблона, форматировании сообщения об ошибке или просто работе с длинными текстами.
Конечно, можно использовать символ перевода строки \n
, как мы делали раньше:
text = 'Пример текста,\nсостоящего из\nнескольких строк'
На печати строка будет выглядеть вот так:
Пример текста,
состоящего из
нескольких строк
Но такой способ становится неудобным, особенно если строка длинная или нужно часто добавлять новые переносы. Каждый \n
приходится вставлять вручную, и это ухудшает читаемость кода.
✨ Альтернатива — многострочные строки (multi-line)
В Python есть более удобный способ записывать текст в несколько строк — многострочные строки (multi-line strings).
Чтобы создать такую строку, нужно заключить текст в тройные кавычки — '''
или """
:
text = '''Пример текста,
состоящего из
нескольких строк'''
Теперь в коде всё выглядит так же, как и при выводе:
Пример текста,
состоящего из
нескольких строк
⚠️ Осторожно с пустой строкой в конце
Если вы закрываете тройные кавычки на новой строке, Python включает и эту строку в результат:
text = '''Пример текста,
состоящего из
нескольких строк
'''
Вывод:
Пример текста,
состоящего из
нескольких строк
Обратите внимание: появляется пустая строка в конце. Чтобы её избежать — не переносите закрывающие кавычки на новую строку:
text = '''Пример текста,
состоящего из
нескольких строк'''
✅ Преимущества multi-line строк
- Читаемость кода — текст в коде выглядит почти как на экране.
- Удобство при редактировании — легко добавлять, удалять и менять строки.
- Не нужно экранировать кавычки:
quote = '''Здесь не нужно экранировать 'одинарные' и "двойные" кавычки'''
🔀 Интерполяция внутри многострочной строки
Многострочные строки можно сочетать с f-строками, чтобы подставлять значения переменных:
a = 'А'
b = 'B'
text = f'''{a} и {b}
сидели на трубе'''
А и B
сидели на трубе
Это особенно удобно для шаблонов, писем, сообщений об ошибках и многострочных описаний.
🤖 Компьютеру всё равно, а человеку — нет
Python может обработать и строки с \n
, и многострочные строки. Для интерпретатора это одно и то же. Но для человека, читающего код, multi-line строки намного удобнее и нагляднее.
Задание
Запишите в переменную text
текст, который приведен ниже. Используйте тройные кавычки.
Lannister, Targaryen, Baratheon, Stark, Tyrell...
they're all just spokes on a wheel.
This one's on top, then that one's on top, and on and on it spins,
crushing those on the ground.
Полезное
Команда проекта находится в телеграм-сообществе. Там можно задать любой вопрос и повлиять на проект
Если вы зашли в тупик, то самое время поговорить с нашим асситентом Тота во вкладке "ИИ-помощник":
Тесты устроены таким образом, что они проверяют решение разными способами и на разных данных. Часто решение работает с одними входными данными, но не работает с другими. Чтобы разобраться с этим моментом, изучите вкладку «Тесты» и внимательно посмотрите на вывод ошибок, в котором есть подсказки.
Это нормально 🙆, в программировании одну задачу можно выполнить множеством способов. Если ваш код прошел проверку, то он соответствует условиям задачи. В редких случаях бывает, что решение подогнано под тесты, но это видно сразу.
Создавать обучающие материалы, понятные для всех без исключения, довольно сложно. Мы очень стараемся, но всегда есть что улучшать. Если вы встретили материал, который вам непонятен, опишите проблему в обратной связи нашего сообщества
Ваше упражнение проверяется по этим тестам
from hexlet.test import expect_output
def test(capsys):
expected = """Lannister, Targaryen, Baratheon, Stark, Tyrell...
they're all just spokes on a wheel.
This one's on top, then that one's on top, and on and on it spins,
crushing those on the ground."""
expect_output(capsys, expected)
Решение учителя откроется через:
20:00
