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

Как использовать функцию interpolate string в 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. Кроме того, то быть полезно иметь опыт работы с другими инструментами интерполяции строк, такими как оператор % и метод .format().

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

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

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

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

Оператор модуля, %

Оператор модуля (%) был основным инструментом интерполяции строк в Python до появления f-строк. Он использует специальные символы, такие как %d, %s, %f, чтобы вставить значения в строку.

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

Метод str.format()

Метод str.format() предоставляет более гибкую и мощную алтернативу оператору %. Он использует фигурные скобки {} для указания места вставки значений.

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

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

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

name = 'Charlie'
age = 42
print(f'My name is {name} and I am {age} years old.')

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

F-строки позволяют легко интерполировать значения и объекты внутри строковых литералов.

name = 'Alice'
age = 27
print(f'My name is {name} and I am {age} years old.')

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

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

a = 5
b = 8
print(f'The sum of {a} and {b} is {a + b}.')

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

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

name = 'Bob'
age = 35
print(f'My name is {name:10} and I am {age} years old.')

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

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

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

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

class Person:
def __init__(self, name):
self.name = name
def __str__(self):
return f'Person: {self.name}'
def __repr__(self):
return f'Person({self.name})'
person = Person('Alice')
print(f'{person}') # Person: Alice
print(f'{person!r}') # Person('Alice')

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

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

x = 10
y = 5
print(f'{x} * {y} = {x * y} (result: {x * y}, x: {x}, y: {y})')

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

F-строки обычно являются более быстрыми и эффективными в сравнении с традиционными инструментами форматирования строк, такими как оператор % и метод .format().

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

Python 3.12 предлагает несколько улучшений в использовании f-строк.

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

С помощью f-строк в Python 3.12 можно использовать кавычки, чтобы вставить кавычки внутрь строки.

quote = 'To be or not to be'
print(f"He said, '{quote}'")

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

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

print(f"First line.\nSecond line.")
print(f"Value: {2\times4}")

Запись комментариев внутри f-строк

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

name = 'Alice'
print(f'{"Hello world!"=}, {name=} # This is a comment')

Разбор сообщений об ошибках f-строк

Python 3.12 предлагает более подробные сообщения об ошибках f-строк, которые помогают быстро идентифицировать и исправить проблемы с форматированием.

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

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

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

F-строки не предоставляют простого способа интерполяции значений из словаря. В этом случае может быть удобнее использовать метод .format_map() или оператор %.

person = {'name': 'Alice', 'age': 27}
print('My name is {name} and I am {age} years old.'.format_map(person))

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

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

import logging
logging.warning('This is a warning: %s', expensive_function())

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

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

query = 'SELECT * FROM table WHERE column = {}'
formatted_query = query.format(user_input)

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

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

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

Если у вас есть старые строки, использующие оператор % или метод .format(), вы можете автоматически преобразовать их в f-строки с помощью модуля futurize.

Главные моменты

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