f-строки в Python

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

4 комментария к “f-строки в Python”

  1. Пингбэк: Основы языка Python за 20 минут

  2. Пингбэк: Как добавить переменную в строку в Python

  3. Пингбэк: Timedelta и работа с интервалами времени в Python

  4. Пингбэк: Как округлить число до сотых в Python

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *