Пропустить до содержимого

Как использовать строковую интерполяцию в Python?

[

Python’s F-String for String Interpolation and Formatting

by Joanna Jablonski Oct 18, 2023

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

К концу этого руководства вы узнаете, почему F-строки являются таким мощным инструментом, который необходимо изучить и освоить для разработчика Python.

В этом руководстве вы узнаете, как:

  • Интерполировать значения, объекты и выражения в свои строки с помощью F-строк
  • Форматировать F-строки с использованием мини-языка форматирования строк в Python
  • Использовать некоторые интересные возможности F-строк в Python 3.12 и выше
  • Решить, когда использовать традиционные инструменты интерполяции вместо F-строк

Чтобы получить наибольшую пользу от этого руководства, вам следует быть знакомым с типом данных “строка” в Python . Также полезным будет иметь опыт работы с другими инструментами интерполяции строк, такими как оператор % и метод .format().

Интерполяция и форматирование строк до Python 3.6

До Python 3.6 у вас было два основных инструмента для интерполяции значений, переменных и выражений в литералах строк:

  1. Оператор интерполяции строкового (%), или оператор модуля
  2. Метод str.format()

Вы получите краткое восстановление этих двух инструментов интерполяции строк в следующих разделах. Вы также узнаете о возможностях форматирования строк.

Использование F-строки для интерполяции строк и форматирования

С появлением Python 3.6 появился новый способ интерполяции строк - F-строка. F-строки позволяют вам интерполировать значения и объекты непосредственно в строку, используя простой и удобочитаемый синтаксис.

Интерполяция значений и объектов в F-строках

Чтобы интерполировать значения и объекты в строку с помощью F-строки, следует использовать префикс f перед строкой и вставить переменные или выражения в фигурные скобки {} внутри строки.

name = "Alice"
age = 25
message = f"Привет, меня зовут {name} и мне {age} лет."
print(message)

Вывод:

Привет, меня зовут Alice и мне 25 лет.

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

Встраивание выражений в F-строки

F-строки также позволяют вам встраивать выражения Python непосредственно внутрь строки. Для этого нужно заключить выражение внутри фигурных скобок !{}.

x = 10
y = 5
message = f"Сумма {x} и {y} равна {x + y}."
print(message)

Вывод:

Сумма 10 и 5 равна 15.

Вы можете встраивать любые допустимые выражения Python внутри F-строк. Это может включать математические операции, вызовы функций и даже условные выражения.

Форматирование строк с помощью F-строк Python

F-строки также предоставляют полный набор функций для форматирования строк, определенных в мини-языке форматирования строк Python. Мини-язык позволяет вам задавать формат чисел, выравнивать текст, указывать точность чисел с плавающей точкой и многое другое.

Например, вы можете форматировать числа с определенной точностью с помощью модификатора :.Nf, где N - это количество знаков после запятой.

pi = 3.141592653589793
formatted_pi = f"Пи, с округлением до двух знаков: {pi:.2f}"
print(formatted_pi)

Вывод:

Пи, с округлением до двух знаков: 3.14

Мини-язык форматирования строк также позволяет выполнять выравнивание текста. Вы можете указать ширину поля и выравнивание (<, >, ^) путем добавления соответствующих символов перед двоеточием.

Другие полезные функции F-строк

F-строки предлагают несколько полезных функций, которые вы можете использовать для дополнительного улучшения вашего кода. Вот некоторые из этих функций:

Использование строковых представлений объектов в F-строках

Pутикулы могут использовать строковое представление объектов Python, чтобы включить их в F-строки. Для этого просто вызовите метод __str__() или __repr__() объекта внутри фигурных скобок.

class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def __str__(self):
return f"{self.name} is {self.age} years old."
person = Person("Bob", 30)
message = f"Person: {person}"
print(message)

Вывод:

Person: Bob is 30 years old.

Самодокументирование выражений для отладки

В F-строках вы можете включить самодокументируемые выражения, которые помогут вам отладить и понять ваш код. Используйте двоеточие и = для привязки выражения к имени переменной.

x = 10
y = 5
message = f"Сумма {x} и {y} равна {x + y = }."
print(message)

Вывод:

Сумма 10 и 5 равна x + y = 15.

Сравнение производительности: F-строки против традиционных инструментов

F-строки быстрее, чем традиционные инструменты интерполяции и форматирования строк в Python. Они реализованы как более эффективный механизм и лучше оптимизированы для интерполяции строк.

Обратите внимание, что F-строки работают только в Python 3.6 и выше. Поэтому, если вы работаете в более старых версиях Python, вам придется использовать другие инструменты интерполяции строк.

Обновление F-строк: Python 3.12 и далее

Python 3.12 предлагает несколько улучшений в использовании F-строк. Вот некоторые из этих улучшений:

Использование кавычек

В Python 3.12 вы можете использовать кавычки для обозначения начала и конца F-строки. Это позволяет вам встраивать кавычки внутрь строкового литерала без необходимости их экранирования.

name = "Alice"
age = 25
message = f'Привет, меня зовут {name} и мне {age} лет.'
print(message)

Использование обратных слешей

В Python 3.12 вы можете использовать обратный слеш для экранирования специальных символов внутри F-строки. Это позволяет вам встраивать специальные символы, такие как перевод строки (\n), без необходимости использования режима сырых строк (r).

name = "Alice"
message = f"Привет, {name}! Добро пожаловать в мир Python!\nСегодня мы узнаем, что такое F-строки."
print(message)

Письменные комментарии

В Python 3.12 вы можете добавлять комментарии напрямую в F-строку, добавляя # после выражения. Это может быть полезно для документации кода и комментариев внутри строк.

name = "Alice"
message = f"Привет, {name=}, это ваше приветствие! #{name} - это имя пользователя."
print(message)

Расшифровка сообщений об ошибках F-строк

Если вы столкнулись с ошибкой в F-строке, Python 3.12 предлагает более подробные и понятные сообщения об ошибках, которые помогут вам найти и исправить проблему.

Использование традиционных инструментов форматирования строк вместо F-строк

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

Интерполяция словаря

Если вам нужно интерполировать значения из словаря, вы можете использовать оператор % или метод .format().

person = {"name": "Alice", "age": 25}
message = "Привет, меня зовут %(name)s и мне %(age)d лет." % person
print(message)

Ленивая оценка в регистрации

Если вы хотите избежать ненужных вычислений при записи журнала, вы можете использовать традиционные инструменты форматирования, чтобы лениво оценивать выражения.

x = 10
y = 5
message = "Значение x: %d, значение y: %d" % (x, y)

Запросы к базе данных SQL

При работе с базами данных SQL может быть предпочтительно использовать метод .format(), чтобы интерполировать значения в строку запроса.

name = "Alice"
age = 25
query = "SELECT * FROM users WHERE name = '{}' AND age = {}".format(name, age)

Интернационализация и локализация

Для интернационализации и локализации приложений может быть полезно использовать форматирование строк с использованием gettext и locale.

Автоматическое преобразование старой строки в F-строку

Итоги

F-строки - это мощный инструмент для интерполяции и форматирования строк в Python. Они обеспечивают удобный синтаксис, возможность форматирования и некоторые полезные функции, которые помогают сделать ваш код более эффективным и читаемым. Вы теперь знаете, как использовать F-строки и когда предпочтительнее использовать их вместо традиционных инструментов форматирования строк.

Теперь вы готовы использовать F-строки в своих проектах Python и получить преимущества, которые они предлагают!