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

Как использовать интерполированные строки в Python?

[

Python’s F-String для интерполяции строк и форматирования

by Joanna Jablonski Oct 18, 2023

Введение

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

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

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

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

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

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

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

Ниже вы приведены краткие описания этих двух инструментов интерполяции строк:

Оператор интерполяции (%)

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

Пример использования оператора интерполяции:

name = "Alice"
age = 25
print("My name is %s and I am %d years old." % (name, age))

Вывод:

My name is Alice and I am 25 years old.

Метод .format()

Метод .format() использует фигурные скобки {} для обозначения места, где нужно вставить значения.

Пример использования метода .format():

name = "Bob"
age = 30
print("My name is {} and I am {} years old.".format(name, age))

Вывод:

My name is Bob and I am 30 years old.

Использование метода .format() также позволяет указывать индексы аргументов и использовать ключевые слова для более точной интерполяции значений.

Интерполяция строк с использованием f-строк в Python

Ф-строки представляют собой синтаксический сахар для интерполяции значений и выражений внутри строк. Они используют префикс f перед строкой и фигурные скобки {} для обозначения интерполируемых значений.

Пример использования f-строк:

name = "Carol"
age = 35
print(f"My name is {name} and I am {age} years old.")

Вывод:

My name is Carol and I am 35 years old.

F-строки можно использовать не только для интерполяции значений переменных, но и для вычисления выражений.

Пример вычисления выражений с помощью f-строк:

num1 = 10
num2 = 5
print(f"The sum of {num1} and {num2} is {num1 + num2}.")

Вывод:

The sum of 10 and 5 is 15.

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

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

Пример форматирования числа с помощью f-строк:

pi = 3.141592653589793
print(f"The value of pi is approximately {pi:.2f}.")

Вывод:

The value of pi is approximately 3.14.

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

Другие функции f-строк

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

  • Использование строкового представления объектов в f-строках:
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def __str__(self):
return f"Person(name={self.name}, age={self.age})"
person = Person("David", 40)
print(f"Person: {person}")

Вывод:

Person: Person(name=David, age=40)
  • Использование выражений для отладки:
x = 10
y = 5
print(f"The result of {x} divided by {y} is {x / y=}.")

Вывод:

The result of 10 divided by 5 is x / y=2.0.
  • Сравнение производительности: f-строки работают немного быстрее, чем оператор интерполяции и метод .format(). Это может быть полезно, если вам нужно оптимизировать производительность вашего кода.

Обновление f-строк в Python 3.12 и выше

В Python 3.12 и выше были внесены некоторые изменения в синтаксис f-строк. Ниже приведены некоторые из них:

  • Использование кавычек:
name = "Eve"
print(f'My name is {name}.')
  • Использование обратных слешей:
path = r"C:\Users\test"
print(f"Path: {path}.")
  • Запись комментариев внутри f-строк:
name = "Frank"
print(f"Name: {name} # This is a comment.")
  • Дешифровка сообщений об ошибках в f-строках стало более понятным и информативным.

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

Несмотря на все преимущества f-строк, иногда может быть полезно использовать традиционные инструменты интерполяции и форматирования строк:

  • Интерполяция словарей:
person = {"name": "Alice", "age": 25}
print("My name is %(name)s and I am %(age)d years old." % person)
  • Ленивая оценка при логгировании:
import logging
logging.basicConfig(level=logging.DEBUG)
name = "Bob"
logging.debug("This is a debug message. Name: %s", name)
  • Запросы к базе данных SQL:
query = """
SELECT *
FROM employees
WHERE age > %(min_age)s
AND age < %(max_age)s
"""
params = {"min_age": 25, "max_age": 40}
formatted_query = query % params
  • Интернационализация и локализация

Автоматическое преобразование старых строк в f-строки

Если у вас есть старый код, который использует традиционные инструменты интерполяции и форматирования строк, вы можете автоматически преобразовать его в использование f-строк с помощью специального инструмента, например futurize или modernize.

Вывод

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