Документация по Python. Теоретические материалы, и практические задачи

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

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *