Поиск по сайту:

f-строки Python — PEP 498 — интерполяция буквенных строк


F-строки Python или форматированные строки — это новый способ форматирования строк. Эта функция была представлена в Python 3.6 в соответствии с PEP-498. Это также называется буквальной интерполяцией строк.

Зачем нам нужны f-строки?

Python предоставляет различные способы форматирования строки. Давайте быстро посмотрим на них и какие проблемы у них есть.

  • % formatting - great for simple formatting but limited support for strings, ints, doubles only. We can’t use it with objects.

  • Template Strings - it’s very basic. function and arguments must be strings.

  • String format() - Python String format() function was introduced to overcome the issues and limited features of %-formatting and template strings. However, it’s too verbose. Let’s look at its verbosity with a simple example.

    >>> age = 4 * 10
    >>> 'My age is {age}.'.format(age=age)
    'My age is 40.'
    

F-строки Python работают почти так же, как функция format(), но удаляют всю многословность, которую имеет функция format(). Давайте посмотрим, как легко мы можем отформатировать приведенную выше строку, используя f-строки.

>>> f'My age is {age}'
'My age is 40.'

F-строки Python введены, чтобы иметь минимальный синтаксис для форматирования строк. Выражения оцениваются во время выполнения. Если вы используете Python 3.6 или более позднюю версию, вы должны использовать f-строки для всех ваших требований к форматированию строк.

Примеры f-строк Python

Давайте рассмотрим простой пример f-строк.

name = 'Pankaj'
age = 34

f_string = f'My Name is {name} and my age is {age}'

print(f_string)
print(F'My Name is {name} and my age is {age}')  # f and F are same

name = 'David'
age = 40

# f_string is already evaluated and won't change now
print(f_string)

Выход:

My Name is Pankaj and my age is 34
My Name is Pankaj and my age is 34
My Name is Pankaj and my age is 34

Python выполняет операторы один за другим, и после вычисления выражений f-строки они не меняются, даже если изменяется значение выражения. Вот почему в приведенных выше фрагментах кода значение f_string остается неизменным даже после изменения переменных «имя» и «возраст» в последней части программы.

1. f-строки с выражениями и преобразованиями

Мы можем использовать f-строки для преобразования даты и времени в определенный формат. Мы также можем запускать математические выражения в f-строках.

from datetime import datetime

name = 'David'
age = 40
d = datetime.now()

print(f'Age after five years will be {age+5}')  # age = 40
print(f'Name with quotes = {name!r}')  # name = David
print(f'Default Formatted Date = {d}')
print(f'Custom Formatted Date = {d:%m/%d/%Y}')

Выход:

Age after five years will be 45
Name with quotes = 'David'
Default Formatted Date = 2018-10-10 11:47:12.818831
Custom Formatted Date = 10/10/2018

2. f-строки поддерживают необработанные строки

Мы также можем создавать необработанные строки, используя f-строки.

print(f'Default Formatted Date:\n{d}')
print(fr'Default Formatted Date:\n {d}')

Выход:

Default Formatted Date:
2018-10-10 11:47:12.818831
Default Formatted Date:\n 2018-10-10 11:47:12.818831

3. f-строки с объектами и атрибутами

Мы также можем получить доступ к атрибутам объекта в f-строках.

class Employee:
    id = 0
    name = ''

    def __init__(self, i, n):
        self.id = i
        self.name = n

    def __str__(self):
        return f'E[id={self.id}, name={self.name}]'


emp = Employee(10, 'Pankaj')
print(emp)

print(f'Employee: {emp}\nName is {emp.name} and id is {emp.id}')

Выход:

E[id=10, name=Pankaj]
Employee: E[id=10, name=Pankaj]
Name is Pankaj and id is 10

4. f-строки, вызывающие функции

Мы также можем вызывать функции в формате f-строки.

def add(x, y):
    return x + y


print(f'Sum(10,20) = {add(10, 20)}')

Вывод: Сумма(10,20)=30

5. f-строка с пробелами

Если в выражении есть начальные или конечные пробелы, они игнорируются. Если литеральная часть строки содержит пробелы, они сохраняются.

>>> age = 4 * 20
>>> f'   Age = {  age   }  '
'   Age = 80  '

6. Лямбда-выражения с f-строками

Мы также можем использовать лямбда-выражения внутри строковых выражений.

x = -20.45
print(f'Lambda Example: {(lambda x: abs(x)) (x)}')

print(f'Lambda Square Example: {(lambda x: pow(x, 2)) (5)}')

Выход:

Lambda Example: 20.45
Lambda Square Example: 25

7. f-строки разные примеры

Давайте посмотрим на несколько разных примеров f-строк Python.

print(f'{"quoted string"}')
print(f'{{ {4*10} }}')
print(f'{{{4*10}}}')

Выход:

quoted string
{ 40 }
{40}

Это все, что касается строк в формате Python, также известных как f-строки.

Вы можете проверить полный скрипт Python и другие примеры Python в нашем репозитории GitHub.

Ссылка: Официальная документация