Найти тему
Заметки Бегинера

Про классический print, f-строки и str.format

Проходя курс, я обратил внимание на рекомендации Александра по применению способов написания и вывода кода через f-строку, процентное форматирование с помощью оператора %, а также метода format

Разберем разницу и сделаем вывод об удобстве использования рассматриваемых методов.

1. Классический вывод через print:

name = 'Mark'

age = 26

print('Hello, my name is', name, 'I am,', age, 'years old')

2. Вывод с использованием f-строки:

name = 'Mark'

age = 26

print(f'Hello, my name is {name}, I am {age} years old')

3. Процентное форматирование с помощью оператора %.

Оператор % позволяет вставлять значения в строку, заменяя специальные символы форматирования, такие как %s для строк, %d для целых чисел и %f для чисел с плавающей запятой.

Вывод с использованием оператора %:

name = 'Mark'

age = 26

formatted_string = 'Hello, my name is %s, I am %d years old" % (name, age)

print(formatted_string)

4. Метод format предоставляет более гибкий способ форматирования строк, позволяя указывать порядок и именовать параметры.

Вывод с использованием str.format:

print('Hello, my name is {}, I am {} years old'.format('Mark', 26))

Очевидно, что удобными являются f-строки и str.format, каждый должен решить для себя что и как ему использовать, однако, с точки зрения практичности и красоты кода, для меня является приоритетным вывод с использованием f-строки.

Вот интересная статья (на английском языке, как же иначе...), а также познавательные "выжимки" из нее:

Итак... что вы используете?

В двух словах мое руководство (с пояснениями ниже):

- Идите вперед и осваивайте str.format() сейчас. Все, что вы изучаете, полностью переносится на f-строки, и иногда вам захочется использовать их str.format() даже в самых современных версиях Python.
- Отдавайте предпочтение f-строкам при работе с кодовой базой, которая их поддерживает. Это означает, что все разработчики и конечные пользователи кодовой базы обязательно используют Python 3.6 или новее.
- А пока предпочитаю str.format().
- Исключение: для logging-модуля используйте процентное форматирование, даже если в противном случае вы используете f-строки.
- Помимо logging, не используйте процентное форматирование, если вас не заставляют это делать устаревшие причины.
«Что мне следует использовать?» — это отдельный вопрос от вопроса «какой из примеров кода следует использовать в статье о Python?» Я использую str.format(). Это потому, что все современные версии Python поддерживают его, поэтому я знаю, что каждый, кто читает это, может его использовать.
Когда-нибудь, когда версии Python до 3.6 станут далекими воспоминаниями, не будет причин не использовать f-строки. Но когда это произойдет, str.format() это все равно будет важно. Существуют ситуации форматирования строк, в которых f-строки в лучшем случае неудобны и str.format() хорошо подходит. Между тем, существует много кода Python, использующего str.format(), который вам нужно уметь читать и понимать. Вот почему я обычно использую str.format() в своих текстах. Удобно, что это также учит многому о фа-струнах; они больше похожи, чем различны, поскольку коды форматирования почти идентичны. str.format() также является единственным практическим выбором для большинства людей, читающих это, и будет таковым еще долгие годы.
Вы можете задаться вопросом, имеет ли место старое процентное форматирование в современном Python. На самом деле так и есть, благодаря модулю logging. К лучшему или худшему, этот важный модуль в значительной степени основан на процентном форматировании. Его можно использовать str.format() в новом коде журналирования, но для этого требуются специальные действия; и устаревший код ведения журналов не может быть безопасно преобразован автоматически. Я рекомендую вам просто смириться с ситуацией и использовать процентное форматирование для сообщений журнала.