Функция format() в Python и мини-язык форматирования
Функция format() в Python превращает одно значение в строку по спецификатору формата: format(45, 'b') дает '101101', а format(3.14159, '.2f') дает '3.14'. Ниже разобраны части спецификатора (заполнение, выравнивание, знак, ширина, точность и тип), примеры с числами и строками, переопределение __format__() в своем классе и отличие встроенной функции от метода str.format().
Метод python format возвращает форматированное значение. В разделе по работе со строками, я уже писал про форматирование строки, советую вам прочитать этот материал.

Содержание статьи
value = 45
# форматируем целое число в двоичное
binary_value = format(value, 'b')
print(binary_value)
# Результат: 101101
Параметры метода format()
Метод format() принимает два параметра:
value- непосредственно само значение, которое надо отформатироватьformat_spec- Спецификатор. Определяет то, как должно быть отформатировано значение
Спецификатор формата, может иметь различные варианты:
[[заполнить]выровнять][знак][#][0][ширина][,][.точность][тип] где параметры: заполнение:: = выравнивание любого символа ::= "<" | ">" | "=" | "^" подпишите ::= "+" | "-" | "" ширина ::= целочисленная точность ::= целочисленный тип ::= "b" | "c" | "d" | "e" | "E" | "f" | "F" | "g" | "G" | "n" | "o" | "s" | "x" | "X" | "%"
Возвращаемые значения метода format()
Метод format() как мы уже поняли, возвращает отформатированное значение, переданного ему значения. Значение форматируется в зависимости от переданного спецификатора. Ниже мы рассмотрим несколько примеров, и подробно разберем спецификаторы.
Пример 1. Форматирование чисел с помощью метода format()
# d, f and b are type
# число
print(format(123, "d"))
# число с плавающей запятой
print(format(123.4567898, "f"))
# Бинарный
print(format(12, "b"))
#Результат123
123.456790
1100
Пример 2. Форматирование с заливкой, выравниванием, шириной, точностью, типом
# integer
print(format(1234, "*>+7,d"))
# float number
print(format(123.4567, "^-09.3f"))
#Результат*+1,234
0123.4570
И так, при форматировании целого числа 1234, был указан спецификатор *>+7,d. На первый взгляд, возможно что непонятно ничего, но это вполне нормальное явление. Давайте разберемся в каждом из приведенных вариантов.
*- Данный символ заполняет все пустые места, после форматирования>- Данный символ выравнивает выходное значение справа+- Этот знак заставляет число быть подписанным ( в случае если он слева от него)7- Данная опция, является шириной. Минимальная ширина, все остальное пустое значение будет заполнено символом заполнения.,- Данный оператор поставит запятую после каждого 4го символаd- Это параметр типа, который указывает что число является целочисленным
При форматировании числа с плавающей запятой, 123.4567, был указан спецификатор следующего формата ^-09.3f. Ниже разберем значение этих спецификаторов.
^- Данная опция выравнивает выходную строку по центру-- Данная опция заставляет показывать знак, только отрицательного числа0- Этот символ помещается на месте пустых мест9- Это параметр ширины.3- Оператор точностиf- Параметр типа, данный параметр указывает на то, что число является числом с плавающей запятой
Пример 3: Использование format() путем переопределения __format__()
# custom __format__() method
class Person:
def __format__(self, format):
if(format == 'age'):
return '23'
return 'None'
print(format(Person(), "age"))
#Результат
23
- В данном случае, отменяется метод
__format__()классаPerson - Теперь он принимает параметр
format()и возвращает23, в том случае, если он равенage - Если формат не указан, вернется
None - Функция
format()выполняется внутриPerson.__format__("age")
Встроенный метод format() против строкового format()
Функция format() аналогична функции форматирования строки. Под капотом обоих функции, используется метод объекта __format__().
- Встроенный метод
format()это низкоуровневая реализация, для форматирования объекта - Строковый
format()является реализацией более высокого уровня, которая способна так же выполнять сложные операции с форматированием строковых объектов.