Форматирование строк – это их оформление с помощью методов, предоставляемых конкретным языком программирования. В 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