Программирование PC Python: f-строки Sat, March 29 2025  

Поделиться

Нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.


Python: f-строки Печать
Добавил(а) microsin   

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.

 

Добавить комментарий


Защитный код
Обновить

Top of Page