В этом руководстве вы узнаете и увидите на примерах, какие преимущества для форматирования дает использование f-строк в Python.
Вступление
Что такое форматирование строк?
Форматирование строк — это оформление строк с помощью методов форматирования, предложенных конкретным языком программирования. В Python таких несколько, но речь пойдет только об одном: f-строках.
f-строки исполняются при исполнении самой программы. Это работает быстрее других методов.
У f-строк более простой синтаксис в сравнении с другими техниками форматирования Python. Эта особенность будет рассмотрена на примерах.
Синтаксис
Каждая инструкция f-строки состоит из двух частей: символа f
(или F
) и строки, которую нужно форматировать. Строка должна быть в одинарных, двойных или тройных кавычках.
Синтаксис следующий.
# мы также можем использовать F, '', ''''', """"""
f"string"
На месте string
нужно написать предложение, которое требуется отформатировать.
Отображение переменных
Раньше для форматирования использовался метод str.format()
. Новый подход делает все вдвое быстрее.
Переменные в фигурных {}
скобках отображаются в выводе как обычно в print
. Стоит посмотреть на примере.
# объявление переменных
name = "Pythonru"
type_of_site = "Блог"
# заключите переменную в {}, чтобы отобразить ее значение в выводе
print(f"{name} это {type_of_site}.")
Pythonru это Блог.
Все значения переменных отобразились в выводе. С этим все понятно. Вместо f
можно написать F
.
# объявление переменных
name = "Pythonru"
type_of_site = "Блог"
# заключите переменную в {}, чтобы отобразить ее значение в выводе
print(F"{name} это {type_of_site}?")
Pythonru это Блог?
Выражения
Что, если можно было бы выполнять арифметические выражения или вызовы функций в строке? Это удобно. И f-строки позволяют делать это.
Просто вставьте выражение в {}
для исполнения. Оно выполнится при запуске программы. Экономит время и код.
Вот примеры отдельных выражений.
# объявление переменных
print(f"{2 * 2}") # вывод: 4
Также в {}
можно вызвать функцию. Определим функцию greet()
и вызовем ее в f-строке.
def greet(name):
return "Привет, " + name
# вызов функции с использованием f-строки
name = "Олег"
print(f"{greet(name)}")
Привет, Олег
Также можно вызвать определенные заранее методы.
# метод title, делает первую букву каждого слова заглавной
string = "pythonru это блог."
print(f"{string.title()}")
Pythonru Это Блог.
Что еще умеет f-строка? Отображать объект? Да. Работает это так же, как и при выводе переменных.
class Sample:
def __init__(self, name, age):
self.name = name
self.age = age
# этот метод будет вызываться при выводе объекта
def __str__(self):
return f'Имя: {self.name}. Возвраст: {self.age}.'
user= Sample("Игорь", 19)
# это вызовет метод __str__()
print(f"{user}")
Имя: Игорь. Возвраст: 19.
Специальные символы
Что делать, если нужно отобразить специальные символы, такие как {}
, \'
, \"
? Они ведь используются в Python для определенных целей. Можно ли использовать экранирование внутри f-строки? Вот ответы на все вопросы.
Кавычки
Можно использовать любые кавычки (одинарные, двойные или тройные) в f-строке. Для их вывода потребуется использовать экранирование. Выражение f-строки не позволяет использовать обратную косую черту. Ее нужно размещать вне {}
.
Рассмотрим на примерах.
name = "Pythonru"
# отображение одинарных кавычек
print(f"Привет, \'{name}\'")
print()
# отображение двойных кавычек
print(f"Привет, \"{name}\"")
Привет, 'Pythonru'
Привет, "Pythonru"
Другие кавычки в f-строках.
f'{"Привет, Pythonru"}' # 'Привет, Pythonru'
f"{'Привет, Pythonru'}" # 'Привет, Pythonru'
f"""Привет, Pythonru""" # 'Привет, Pythonru'
f'''Привет, Pythonru''' # 'Привет, Pythonru'
{}
также можно включать в тройные кавычки.
В f-строках нельзя использовать обратную косую черту в {}
. Если попробовать, то будет ошибка.
print(f"{\"Pythonru\"}") # SyntaxError
Скобки
Двойные скобки нужны, чтобы вывести одни фигурные скобки в f-строке.
print(f"{{Pythonru}}")
{Pythonru}
Если нужно вывести две пары скобок, то в выражении потребуется указать по четыре.
print(f"{{{{Pythonru}}}}")
{{Pythonru}}
Словари
Нужно быть осторожным, работая с ключами словаря в f-строке. Необходимо использовать другие кавычки по отношению к ключам. Они не должны быть теми же, которыми окружена f-строка.
person = {"name": "Игорь", "age": 19}
print(f"{person['name']}, {person['age']} лет.")
Игорь, 19 лет.
Со словарями так нельзя.
person = {"name": "Игорь", "age": 19}
print(f'{person['name']}, {person['age']} лет.')
File "<ipython-input-65-6849ff0810ae>", line 2
print(f'{person['name']}, {person['age']} лет.')
^
SyntaxError: invalid syntax