Python format()

The format() method returns a formatted representation of the given value controlled by the format specifier.

Example

value = 45

# format the integer to binary binary_value = format(value, 'b')
print(binary_value) # Output: 101101

format() Syntax

It's syntax is:

format(value[, format_spec])

format() Parameters

The format() function takes two parameters:

  • value - value that needs to be formatted
  • format_spec - The specification on how the value should be formatted.

The format specifier could be in the format:

[[fill]align][sign][#][0][width][,][.precision][type]
where, the options are
fill        ::=  any character
align       ::=  "<" | ">" | "=" | "^"
sign        ::=  "+" | "-" | " "
width       ::=  integer
precision   ::=  integer
type        ::=  "b" | "c" | "d" | "e" | "E" | "f" | "F" | "g" | "G" | "n" | "o" | "s" | "x" | "X" | "%"

Visit these links to learn more about format types and alignment.


format() Return Value

The format() function returns a formatted representation of a given value specified by the format specifier.


Example 1: Number formatting with format()

# d, f and b are type

# integer
print(format(123, "d"))
# float arguments
print(format(123.4567898, "f"))
# binary format
print(format(12, "b"))

Output

123
123.456790
1100

Example 2: Number formatting with fill, align, sign, width, precision and type

# integer 
print(format(1234, "*>+7,d"))
# float number
print(format(123.4567, "^-09.3f"))

Output

*+1,234
0123.4570

Here, when formatting the integer 1234, we've specified the formatting specifier *>+7,d. Let's understand each option:

  • * - It is the fill character that fills up the empty spaces after formatting
  • > - It is the right alignment option that aligns the output string to the right
  • + - It is the sign option that forces the number to be signed (having a sign on its left)
  • 7 - It is the width option that forces the number to take a minimum width of 7, other spaces will be filled by fill character
  • , - It is the thousands operator that places a comma between all thousands.
  • d - It is the type option that specifies the number is an integer.

When formatting the floating point number 123.4567, we've specified the format specifier ^-09.3f. These are:

  • ^ - It is the center alignment option that aligns the output string to the center of the remaining space
  • - - It is the sign option that forces only negative numbers to show the sign
  • 0 - It is the character that is placed in place of the empty spaces.
  • 9 - It is the width option that sets the minimum width of the number to 9 (including decimal point, thousands comma and sign)
  • .3 - It is the precision operator that sets the precision of the given floating number to 3 places
  • f - It is the type option that specifies the number is a float.

Example 3: Using format() by overriding __format__()

# custom __format__() method
class Person:
def __format__(self, format): if(format == 'age'): return '23' return 'None'
print(format(Person(), "age"))

Output

23

Here, we have overridden the __format__() method of the class Person.

It now accepts a format parameter and returns 23 if it is equal to 'age'. If no format is specified, None is returned.

The format() function internally runs Person().__format__("age") to return 23.


Built-in format() Vs. String format()

The format() function is similar to the String format method. Internally, both methods call the __format__() method of an object.

While the built-in format() function is a low level implementation for formatting an object using __format__() internally, string format() is a higher level implementation able to perform complex formatting operations on multiple object strings as well.