Python format() 函数

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,789

2. 在使用 format() 格式化数字时,如何实现符号显示?

我们可以使用 “+” 选项,比如:

print(format(-5, '+d'))      # 输出:-5

3. format() 函数支持日期格式化吗?

支持。因为 datetime 模块重写了 __format__() 方法,所以我们可以直接使用 format() 来格式化日期:

from datetime import datetime

now = datetime.now()
print(format(now, '%Y-%m-%d'))    # 完美输出类似:2026-02-27

上一篇: chr()

下一篇: id()

给站长反馈

绿叶网正在不断完善中,小伙伴们如果发现任何问题,还望多多给站长反馈,谢谢!

邮箱:lvyenet@vip.qq.com

「绿叶网」服务号
绿叶网服务号放大
关注服务号,微信也能看教程。
绿叶网服务号