说明
《Python 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
Python 的内置函数 format() 返回由格式说明符控制的给定值的格式表示。它返回的是一个格式化后的字符串。
以下是一些示例:
format('hello')
# 'hello'
format(3, 'b') # 二进制
# '11'
format(123, 'f') # 浮点
# '123.000000'
format(123, '6.2f') # 浮点位数
# '123.00'
语法如 format(value, format_spec='', /)
,其中 format_spec 是可选的,它们的意义为:
对象的特殊方法 value.__format__(format_spec)
来决定返回的格式处理。
format_spec 支持的是大多数内置类型使用一种标准的格式化语法: 格式规格迷你语言(Format Specification Mini-Language),可通过 help('FORMATTING')
查看说明。
默认的 format_spec 是一个空字符串,它通常给出与调用 str(value) 相同的结果。
详见 字符串的格式化。
调用 format(value, format_spec)
会转换成 type(value).__format__(value, format_spec)
,所以实例字典中的 __format__()
方法将不会调用。如果方法搜索回退到 object 类但 format_spec 不为空,或者如果 format_spec 或返回值不是字符串,则会触发 TypeError 异常。
在 3.4 版更改: 当 format_spec 不是空字符串时,object().__format__(format_spec)
会触发 TypeError。
通过重写 __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。如果未指定格式,则不返回任何格式。
format() 函数在内部运行 Person().__format__("age")
返回 23。
format() 函数类似于字符的 format 方法。在内部,这两种方法都调用对象的 __format__()
方法。
虽然内置的 format() 函数是一个底层实现,用于在内部使用 __format__()
对对象进行格式化,但 string format 是一个高级实现,能够对多个对象字符串执行复杂的格式化操作。
更新时间:March 28, 2022, 11:29 p.m. 标签:python 格式化