Форматирование строк: метод format и F-строки

Курс по Python: https://stepik.org/course/100707

На этом занятии мы подробнее поговорим о способах формирования строк на основе набора различных переменных. Мы уже знаем с вами как создавать строки и соединять их между собой. Предположим, у нас есть две переменные:

age=18; name="Сергей"

и мы формируем такое сообщение:

"Меня зовут "+name+", мне "+str(age)+" и я люблю язык Python."

На выходе получим:

'Меня зовут Сергей, мне 18 и я люблю язык Python.'

Но это не самый удобный и распространенный способ формирования строк по шаблону. Гораздо удобнее использовать специальный метод строки:

str.format(*args)

который в данном конкретном случае можно использовать так:

"Меня зовут {0}, мне {1} и я люблю язык Python.".format(name, age)

Смотрите, здесь в фигурных скобках мы указываем индекс переменной, значение которой будет подставлено в это место строки. Индекс 0 – первая переменная, указанная в методе format, т.е. name, а индекс 1 – вторая переменная age. То есть, метод формат возвращает новую строку в заданном формате. И чтобы сохранить этот результат в какой-либо переменной, следует записать так:

msg = "Меня зовут {0}, мне {1} и я люблю язык Python.".format(name, age)

Теперь msg ссылается на созданную строку.

Также мы можем одну и ту же переменную указывать несколько раз, например, так:

"Меня зовут {0}, мне {1} и я люблю язык Python. {0}".format(name, age)

Как видите, это удобнее обычной конкатенации строк. Но эту запись можно сделать еще понятнее, используя именованные параметры. Для этого у каждой переменной пропишем ее имя (ключ). Оно придумывается программистом, например:

format(fio=name, old=age)

и, далее, в формате строки указываются уже эти имена:

"Меня зовут {fio}, мне {old} и я люблю язык Python. {fio}".format(fio=name, old=age)

Это уже гораздо нагляднее и понятнее. Глядя на эту строку, мы легко понимаем, что и где будет записано. Конечно, если указать неверное имя, например, так:

"Меня зовут {name}, мне {old} и я люблю язык Python. {fio}".format(fio=name, old=age)

То возникнет ошибка, говорящая, что ключа name не существует. То есть, в фигурных скобках указывается именно ключ, а не переменная. И, кроме того, благодаря использованию ключей, мы можем записывать переменные в методе format в любом порядке. Например, поменяем их местами:

"Меня зовут {fio}, мне {old} и я люблю язык Python. {fio}".format(old=age, fio=name)

На выходе получим то же самое.

Но, начиная с версии Python 3.6, появился новый, гораздо более удобный способ форматирования строк. Это, так называемые, F-строки. Здесь мы рассмотрим лишь основы использования этого подхода, для более глубокого изучения можно обратиться к стандарту PEP8:

https://www.python.org/dev/peps/pep-0498/

Итак, чтобы указать Python воспринимать строку, как F-строку, перед ее литералом ставится символ ‘f’ (именно малая буква). И, теперь, в фигурных скобках можно записывать любые конструкции языка Python, например, имена переменных:

f"Меня зовут {name}, мне {age} и я люблю язык Python."

Видите как это удобно?

Далее, внутри фигурных скобок F-строк можно записывать, например, и арифметические операции и методы строк:

f"Меня зовут {name.upper()}, мне {age*2} и я люблю язык Python."

В результате, получим:

'Меня зовут СЕРГЕЙ, мне 36 и я люблю язык Python.'

Или даже не прописывать переменные, а использовать обычные числовые операции и вызывать функции:

f"Меня зовут {len(name)}, мне {14*2} и я люблю язык Python."

Как видите, все достаточно просто и наглядно. Теперь, в своих программах вы тоже сможете использовать F-строки, если ваш интерпретатор языка версии 3.6 и выше, либо метод format(), если F-строки не поддерживаются из-за низкой версии. Обычно, сейчас повсеместно применяют F-строки, так как они намного удобнее других способов форматирования строк.

Для закрепления этого материала подготовлено несколько практических заданий и после их выполнения жду всех вас на следующем занятии.

Курс по Python: https://stepik.org/course/100707

Видео по теме