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

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

Появились вопросы? Задайте на Яндекс Кью

У блога есть сообщество на Кью >> Python Q <<. Там я и другие участники отвечаем на вопросы по python, программированию и контенту сайта.

Обучение Python и Data Science

Профессия Python-разработчик / Skillbox

Профессия Python-разработчик / Skillbox

7 313 2 925 ₽/мес.
Профессия Python Fullstack / Skillbox

Профессия Python Fullstack / Skillbox

6 569 2 627 ₽/мес.
Профессия Data Scientist / Skillbox

Профессия Data Scientist / Skillbox

9 187 3 675 ₽/мес.
Python-фреймворк на Django / Skillbox

Python-фреймворк на Django / Skillbox

818 ₽/мес.
Профессия DS: машинное обучение / Skillbox

Профессия DS: машинное обучение / Skillbox

6172 2469 ₽/мес.
Профессия DS: анализ данных / Skillbox

Профессия DS: анализ данных / Skillbox

6172 2469 ₽/мес.

Вам помогла эта статья? Поделитесь в соцсетях или блоге. Репосты помогают сайту развиться.

Александр
Я создал этот блог в 2018 году, чтобы распространять полезные учебные материалы, документации и уроки на русском. На сайте опубликовано множество статей по основам python и библиотекам, уроков для начинающих и примеров написания программ.