Python format() 语法
format() 是 Python 的一个内置函数,它用于将值格式化为特定格式的字符串。format() 函数会将变量插入占位符内,并控制输出的格式。
语法:
format(value, format_spec='')说明:
format() 函数接收以下 2 个参数。
value(必选):要格式化输出的值,可以是任意类型的数据(如整数、浮点数、字符串、元组等)。format_spec(可选,默认值:''):一个包含格式化指令的字符串,用于指定输出的格式。
提示:
- 本节的 format() 是一个内置函数,它与字符串 format() 方法是两个不同的东西。
- 大多数情况下,我们更推荐使用 f-string 或 str.format() 方法,因为它们通常更简洁易读。
Python format() 摘要
| 使用频率 | 高 |
|---|---|
| 官方文档 | 查看 |
| 相关函数 | str()、repr()、ascii() |
格式规范(format_spec)
格式规范(即 format_spec 参数)的语法如下:
[[fill]align][sign][#][0][width][grouping_option][.precision][type]| 指令 | 说明 |
|---|---|
| fill | 填充字符(需与 align 配合使用,如 '*<' 表示左对齐并用 * 填充) |
| align | 对齐方式:<(左)、>(右)、^(居中)、=(数字符号后填充) |
| sign | 符号显示:+(显示正负号)、-(仅负号)、空格(正数留空) |
| width | 最小字段宽度(如 10 表示至少占 10 字符) |
| , | 千位分隔符(如 '{:,}'.format(1000) → '1,000') |
| .precision | 浮点数精度或字符串最大长度(如 .2f 表示保留两位小数) |
| type | 类型转换(见下表) |
| 类型 | 说明 |
|---|---|
| 's'(默认值) | 字符串 |
| 'c' | 字符 |
| 'b' | 二进制整数 |
| 'd' | 十进制整数 |
| 'o' | 八进制整数 |
| 'x' | 十六进制整数(使用小写字母表示 9 以上的数码) |
| 'X' | 十六进制整数(使用大写字母表示 9 以上的数码) |
| 'n' | 数字,与 'd' 相似 |
| 'e' | 指数表示,使用字母 'e',默认精度为 6 |
| 'E' | 指数表示,使用字母 'E' |
| 'f' | 定点表示,默认精度为 6 |
| 'F' | 定点表示。与 'f' 相似,但会将 nan 转为 NAN,并将 inf 转为 INF |
Python format() 示例
接下来,我们通过几个简单的例子来讲解一下 Python format() 函数是如何使用的。
示例 1:format() 设置数字格式
# 整数转二进制
print(format(10, 'b'))
# 浮点数保留两位小数
print(format(3.1415926, '.2f'))
# 科学计数法
print(format(123456, '.2e'))运行结果如下。
1010
3.14
1.23e+05分析:
format() 通过 format_spec 参数可以精确控制数字的表示形式,如二进制转换、浮点精度和科学计数法。
示例 2:format() 对齐与填充
# 右对齐并填充 *
print(format('text', '*>10'))
# 左对齐并补零
print(format(42, '0<5d'))
# 居中显示
print(format(3.14, '^10.2f')) 运行结果如下。
******text
42000
3.14分析:
使用 format() 的 fill 和 align 可以调整输出的对齐方式及填充字符,适用于表格等格式化场景。
深入了解 format()
format(value, format_spec) 等价于 type(value).__format__(value, format_spec),我们可以通过重写 __format__() 方法来使用 format() 函数。
示例 3:重写 __format__() 方法
class Person:
def __format__(self, format):
if(format == 'age'):
return '20'
return 'None'
print(format(Person(), 'age'))运行结果如下。
20常见问题
1. 在使用 format() 格式化数字时,如何显示千位分隔符?
我们可以使用 “,” 选项,比如:
print(format(123456789, ',d')) # 输出:123,456,7892. 在使用 format() 格式化数字时,如何实现符号显示?
我们可以使用 “+” 选项,比如:
print(format(-5, '+d')) # 输出:-53. format() 函数支持日期格式化吗?
支持。因为 datetime 模块重写了 __format__() 方法,所以我们可以直接使用 format() 来格式化日期:
from datetime import datetime
now = datetime.now()
print(format(now, '%Y-%m-%d')) # 完美输出类似:2026-02-27