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 sign0
- 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 placesf
- 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.