Метод 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() является реализацией более высокого уровня, которая способна так же выполнять сложные операции с форматированием строковых объектов.