Форматирование строк — это их оформление с помощью методов, предоставляемых конкретным языком программирования. В Python есть различные техники форматирования строк. Сейчас мы рассмотрим новый вариант — f-строки. Он стал доступен начиная с Python 3.6.
Скачивайте книги ТОЛЬКО на русском языке у нас в телеграм канале: PythonBooksRU
f-строки оцениваются во время выполнения программы. Этот подход обеспечивает лучшую скорость по сравнению с более старыми способами форматирования.
Также f-строки отличаются более простым синтаксисом. Каждый оператор f-строк состоит из двух частей. Первая — символ f или F, а вторая — строка, которую мы хотим отформатировать. Строка заключается в одинарные, двойные или тройные кавычки.
Рассмотрим синтаксис.
# Также можно использовать F, '', "", """""" f"string"
На месте string нужно поместить нашу строку, которую мы хотим отформатировать.
Примечание редакции: о красивом выводе чисел читайте в статье «Форматирование чисел в Python».
Отображение переменных
Раньше для форматирования строк мы чаще всего использовали метод str.format(). Но теперь у нас появился новый способ, позволяющий работать вдвое быстрее.
Переменные, заключенные в фигурные скобки {}, выводятся так, как если бы их передали в оператор print. Рассмотрим пример.
# Объявление переменных
name = "Datacamp"
type_of_company = "Educational"
# Заключаем переменные в {}, чтобы вывести их значение
print(f"{name} is an {type_of_company} company.")
# Результат:
# Datacamp is an Educational company.
Мы получили значения переменных в выводе. Видите, все просто. Мы также можем заменить f на F.
# Объявление переменных
name = "Datacamp"
type_of_company = "Educational"
# Заключаем переменные в {}, чтобы вывести их значение
print(F"{name} is an {type_of_company} company.")
# Результат:
# Datacamp is an Educational company.
F и f работают одинаково.
Выражения
f-строка позволяет нам оценивать выражения внутри строки. Это могут быть арифметические выражения, вызовы функций и т.д.
Просто поместите выражение, которое нужно оценить, внутрь фигурных скобок {}. f-строка оценит его во время выполнения программы. Это отличная возможность, которая экономит ваше время и код.
Давайте посмотрим примеры различных типов выражений.
# Арифметическое выражение
print(f"{5 * 5}")
# Результат:
# 25
Мы также можем вызывать функции внутри {}. Давайте определим функцию greet() и вызовем ее в f-строке.
def greet(name):
return "Hello, " + name
# Вызов функции с использованием f-строки
name = "Datacamp"
print(f"{greet(name)}")
# Результат:
# Hello, Datacamp
Таким же образом мы можем вызывать предопределенные методы. Давайте посмотрим.
# Вызов метода title, который переводит первую букву каждого слова в верхний регистр
string = "datacamp is an educational company."
print(f"{string.title()}")
# Результат:
# Datacamp Is An Educational Company.
Что еще мы можем сделать с f-строками? Можем ли мы отобразить объект? Да, можем. Это аналогично выводу переменных.
class Sample:
def __init__(self, name, age):
self.name = name
self.age = age
# Этот метод будет вызываться при распечатке объекта
def __str__(self):
return f'{self.name} is {self.age} years old.'
john = Sample("John", 19)
# Это вызовет метод __str__()
print(f"{john}")
# Результат:
# John is 19 years old.
Специальные символы
Что, если мы хотим отобразить специальные символы, такие как {}, \', \", которые в Python имеют особое значение? Можем ли мы использовать символ экранирования (обратный слэш) внутри f-строки? Давайте разбираться.
Вывод кавычек
В f-строке можно использовать любые кавычки (одиночные, двойные или тройные). Для печати кавычек следует использовать символ экранирования. Но в выражениях использовать обратную косую черту нельзя, поэтому мы должны поместить ее вне фигурных скобок.
Рассмотрим это на примерах.
name = "Datacamp"
# Отображение одинарных кавычек
print(f"Hello, \'{name}\'")
print()
# Отображение двойных кавычек
print(f"Hello, \"{name}\"")
# Результат:
# Hello, 'Datacamp'
# Hello, "Datacamp"
Рассмотрим другие варианты использования кавычек в f-строках.
f'{"Hello, Datacamp"}'
# Результат:
# 'Hello, Datacamp'
f"{'Hello, Datacamp'}"
# Результат:
# 'Hello, Datacamp'
f"""Hello, Datacamp""" # Результат: # 'Hello, Datacamp'
f'''Hello, Datacamp''' # Результат: # 'Hello, Datacamp'
Мы также можем заключить фигурные скобки в тройные кавычки.
Использовать обратную косую черту внутри фигурных скобок в f-строке нельзя. Попытавшись сделать это, вы получите ошибку.
print(f"{\"Datacamp\"}")
File "", line 1 print(f"{\"Datacamp\"}") ^ SyntaxError: f-string expression part cannot include a backslash
Вывод фигурных скобок
Для печати фигурных скобок с помощью f-строк нужно использовать двойной набор скобок:
print(f"{{Datacamp}}")
# Результат:
# {Datacamp}
Если вы хотите отобразить два набора скобок с помощью f-строки, то вам придется использовать четыре набора скобок.
print(f"{{{{Datacamp}}}}")
# Результат:
# {{Datacamp}}
Словари
Мы должны быть немного осторожны, работая с ключами словаря внутри f-строки. Для ключей и f-строки нужно использовать разные кавычки.
person = {"name": "John", "age": 19}
print(f"{person['name']} is {person['age']} years old.")
# Результат:
# John is 19 years old.
А вот так делать нельзя:
person = {"name": "John", "age": 19}
print(f'{person['name']} is {person['age']} years old.')
Результат:
File "<ipython-input-65-6849ff0810ae>", line 2
print(f'{person['name']} is {person['age']} years old.')
^
SyntaxError: invalid syntax
Я надеюсь, прочитав эту статью, вы узнали что-то новое о Python. Успешного кодинга 🙂
Перевод статьи Hafeezul Kareem Shaik «f-string Formatting in Python».

Пингбэк: Основы языка Python за 20 минут
Пингбэк: Как добавить переменную в строку в Python
Пингбэк: Timedelta и работа с интервалами времени в Python
Пингбэк: Как округлить число до сотых в Python