Table of Contents
The built-in format() method returns a formatted representation of the given value controlled by the format specifier.
The 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:
format(value[, format_spec])
1. 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.
2. Return value from format()
The 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"))
Output
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"))
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.
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"))
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.