📜  Python format()

📅  最后修改于: 2020-09-20 13:40:08             🧑  作者: Mango

内置的format()方法返回格式说明符控制的给定值的格式表示。

format() 函数类似于String格式方法。在内部,这两种方法都调用对象的__format__()方法。

内置format() 函数是用于内部使用__format__()格式化对象的低级实现,而字符串 format()是可以对多个对象字符串执行复杂格式化操作的高级实现。

format()的语法为:

format(value[, format_spec])

format()参数

format() 函数采用两个参数:

  1. 值-需要格式化的值
  2. format_spec-有关如何设置值格式的规范。

格式说明符可以采用以下格式:

[[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" | "%"

访问这些链接以了解有关格式类型和对齐方式的更多信息。

从format()返回值

format() 函数返回格式说明符指定的给定值的格式表示。

示例1:使用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

示例2:使用填充,对齐,符号,宽度,精度和类型的数字格式

# integer 
print(format(1234, "*>+7,d"))

# float number
print(format(123.4567, "^-09.3f"))

输出

*+1,234
0123.4570

在这里,格式化整数1234 ,我们指定了格式化说明符*>+7,d 。让我们了解每个选项:

  1. * -是填充字符,用于在格式化后填充空白
  2. > -这是右对齐选项,可将输出字符串右对齐
  3. + -这是一个符号选项,用于强制对数字进行签名(其左侧带有一个符号)
  4. 7宽度选项可强制数字采用最小宽度7,其他空格将由填充字符填充
  5. , -千位运算符在所有千位之间放置逗号。
  6. d类型选项,指定数字为整数。

格式化浮点数123.4567 ,我们指定了格式说明符^-09.3f 。这些是:

  1. ^ -这是居中对齐选项,它将输出字符串对齐到剩余空间的中心
  2. -这是符号选项,仅强制使用负数显示符号
  3. 0它是代替空白的字符。
  4. 9使用width选项将数字的最小宽度设置为9(包括小数点,千位逗号和符号)
  5. .3精度运算符将给定浮点数的精度设置为3位
  6. 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

在这里,我们重写了Person类的__format__()方法。

现在,它接受format参数,如果等于'age' ,则返回23。如果未指定格式,则返回None

format() 函数在内部运行Person().__format__("age")以返回23。