Python предоставляет мощную фичу, так называемые f-строки (форматированные строковые литералы), применяемые для упрощения форматирования, т. е. для более лаконичного управления тем, что будет выводить функция print() [2]. F-строки были введены в Python 3.6, и их функционал во многом похож на на то, что делают спецификации формата printf языка C, или спецификации формата вывода C#. Пользователь получает возможность краткий и интуитивно понятный способ встраивания выражений и переменных непосредственно в строки.
[Как использовать f-строки на Python]
Чтобы создать f-строку, подставьте перед строкой префикс из буквы f. Сама строка может быть оформлена так же, как этого ожидает метод str.format().
Печать переменных. В следующем примере f-строка используется внутри функции print() для печати строки. Для указания формата вывода печатаемой переменной используются фигурные скобки, таким способом мы указываем, что в этом месте должно быть выведено на печать значение переменной val. Подобным образом мы также используем переменную name, подставляя её во второй вызов функции print().
# Пример программы Python3, где используется f-строка:
val = 'Geeks' print(f"{val}for{val} is a portal for {val}.")
name = 'Om'
age = 22 print(f"Hello, My name is {name} and I'm {age} years old.")
Эта программа выведет:
GeeksforGeeks is a portal for Geeks. Hello, My name is Om and I'm 22 years old.
Печать даты. В этом примере мы напечатаем дату с помощью модуля datetime и f-строки. Переменной today присваивается значение текущей даты, и внутри f-строки задается предоставление переменной по формату %B, %d, и %Y что означает полный месяц, день месяца и год соответственно.
# Печать текущей даты с помощью библиотеки datetime: from datetime import datetime
today = datetime.today() print(f"Current date is: {today:%B %d, %Y}")
Эта программа выведет:
May 23, 2024
Для вывода месяца по-русски можно воспользоваться модулем locale:
from datetime import datetime import locale
locale.setlocale(
category=locale.LC_ALL,
# Для установки локали не следует здесь
# использовать "de_DE", это не сработает:
locale="Russian"
)
today = datetime.today() print(f"Сейчас {today:%B} месяц, {today:%d} число, {today:%Y} год.")
Эта программа выведет:
Сейчас Март месяц, 06 число, 2025 год.
Примечание: f-строки работают быстрее, чем два чем два наиболее часто используемых механизма форматирования строк: форматирование % и str.format().
[Использование кавычек в f-строках]
Чтобы использовать в f-строках кавычек любого типа, следует убедиться, что кавычки внутри выражения не такие же, как кавычки, используемые для самой f-строки.
print(f"'GeeksforGeeks'") # правильно print(f"""Geeks"for"Geeks""") # неправильно print(f'''Geeks'for'Geeks''') # неправильно
Этот код выведет:
'GeeksforGeeks' Geeks"for"Geeks Geeks'for'Geeks
[Вычисление выражений с помощью f-строк]
Мы также можем вставлять выражения в f-строки на Python. Для этого внутрь фигурных скобок вставляется вычисляемое выражение, и результат вычисления будет напечатан в выводимом сообщении.
english = 78
maths = 56
hindi = 85
print(f"Ученик получил общую оценку {english + maths + hindi} из 300")
Этот код выведет:
Ученик получил общую оценку 219 из 300
[Использование f-строк в JSON]
Вы можете непосредственно встраивать f-строки внутрь строк JSON на Python:
name = "Алиса"
age = 30
json_data = f'{{ "Имя": "{name}", "возраст": {age} }}' print(json_data)
Этот код выведет:
{ "Имя": "Алиса", "возраст": 30 }
Обратите внимание на использование двойных фигурных скобок {{ }} внутри f-строки для формирования корректной строки JSON.
[Использование f-строк для ввода]
На Python мы можем использовать f-строки для ввода значений вместе с функцией input():
name = input("Введите ваше имя: ")
message = f"Привет, {name}!" print(message)
[Возможные альтернативы для f-строк]
До появления f-строк в Python 3.6, вы могли форматировать вывод с помощью метода str.format(), или использовать %-форматирование (старый стиль форматирования Python). Например:
name = "Алиса"
age = 30
sentence = "Меня зовут {}, и мне {} лет.".format(name, age) print(sentence)
Этот код введет:
Меня зовут Алиса, и мне 30 лет.
Однако f-строки обычно предпочтительнее, потому что они понятнее и более эффективны.
[Ошибки при использовании f-строк]
Обратные слеши в f-строках на Python. Символы обратного слеша (backslash, \) нельзя использовать напрямую.
f"newline: {ord('\n')" Hangup (SIGHUP) File "Solution.py", line 1 f"newline: {ord('\n')" ^ SyntaxError: f-string expression part cannot include a backslash
Чтобы решить эту проблему, мы можем поместить символ backslash в переменную:
newline = ord('\n') print(f"newline: {newline}")
Этот код выведет:
newline: 10
Встраивание комментариев в f-строку. Мы не можем использовать комментарии внутри выражений f-строки. Следующий код приведет к ошибке:
f"GeeksforGeeks is {5*2 + 3 #geeks-5} characters." Hangup (SIGHUP) File "Solution.py", line 1 f"GeeksforGeeks is {5*2 + 3 #geeks-5} characters." ^ SyntaxError: f-string expression part cannot include '#'
Печать фигурных скобок с помощью f-строк. Если мы хотим, чтобы f-строка вывела фигурные скобки, необходимо указать фигурную скобку дважды. Обратите внимание, что что для каждой отдельной пары фигурных скобок нам нужно дважды ввести двойные фигурные скобки, как показано в приведенном ниже коде.
# Печать одиночных фигурных скобок: print(f"{{Привет, Олег!}}")
# Печать двойных фигурных скобок: print(f"{{{{Привет, Олег!}}}}")
Этот код выведет:
{Привет, Олег!} {{Привет, Олег!}}
Печать элементов key-value словаря с помощью f-строк. При работе со словарями следует убедиться, что если мы используем двойные кавычки (") для самой f-строки, то для ключей словаря внутри f-строки следует использовать одинарные кавычки ('), и наоборот. Иначе мы получим ошибку синтаксиса. Например:
Geek = { 'Id': 112,
'Name': 'Harsh'}
print(f"Id of {Geek["Name"]} is {Geek["Id"]}")
При запуске этого кода произойдет ошибка:
Hangup (SIGHUP) File "Solution.py", line 4 print(f"Id of {Geek["Name"]} is {Geek["Id"]}") ^ SyntaxError: invalid syntax Using the same type of quotes for f-string and key
А вот этот код будет работать правильно:
Geek = { 'Id': 100,
'Name': 'Om'}
print(f"Id of {Geek['Name']} is {Geek['Id']}")
.. и выведет:
Id of Om is 100
[Ссылки]
1. f-strings in Python site:geeksforgeeks.org. 2. Python: руководство по функции print. 3. Форматирование даты прописью на русском языке site:stackoverflow.com. |