Table of Contents
The built-in format() method returns a formatted representation of the given value controlled by the format specifier.
format() function is similar to the String format method. Internally, both methods call
__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.
The syntax of format() is:
1. format() Parameters
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][#][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.
2. Return value from format()
format() function returns a formatted representation of a given value specified by the format specifier.
3. 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"))
123 123.456790 1100
4. 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"))
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.
5. 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"))
Here, we have overridden the
__format__() method of the class
It now accepts a
format parameter and returns 23 if it is equal to
'age'. If no format is specified,
None is returned.
format() function internally runs
Person().__format__("age") to return 23.