| 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 datetimeimport 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.
 |