Python f-string 格式化速查:数字格式、对齐、用等号调试的小技巧、日期,以及怎样输出花括号本身。每个例子都附上真实输出。
f-string 会先计算花括号里的表达式,再把结果放进字符串。它比 % 和 .format() 快,而且读起来的顺序和你想的顺序一致。
冒号后面的部分叫格式规范(format specification),大多数实用的功能都在这里。
基础用法
引号前面的 f 让花括号生效。
# the basics
name, age = 'ada', 36
print(f'{name} is {age}')
输出:
ada is 36
任何表达式都能放进去
方法调用、索引、算术运算和比较都可以。
# any expression fits inside the braces
items = ['a', 'b', 'c']
print(f'{len(items)} items, first is {items[0].upper()}')
print(f'{age * 2} and {age > 30}')
输出:
3 items, first is A
72 and True
表达式要写短。如果得想一想才看得懂,就在上一行先给它起个名字。
数字格式
冒号之后依次是:填充和对齐,然后是宽度,最后是精度和类型。
# number formatting
price = 1234.5678
print(f'{price:.2f}')
print(f'{price:,.2f}')
print(f'{price:>12.2f}|')
print(f'{price:<12.2f}|')
print(f'{price:^12.2f}|')
print(f'{0.4567:.1%}')
输出:
1234.57
1,234.57
1234.57|
1234.57 |
1234.57 |
45.7%
< 是左对齐,> 是右对齐,^ 是居中。逗号会加上千位分隔符,% 会乘以 100 并加上百分号。
让列对齐
宽度加上对齐,就足够在控制台里打出清楚的表格。
# padding and alignment for tables
rows = [('apple', 3), ('bread', 12), ('milk', 1)]
for item, qty in rows:
print(f'{item:<10}{qty:>4}')
输出:
apple 3
bread 12
milk 1
用等号调试
在末尾加上 =,会把表达式和它的值一起打印出来。这是 Python 里最快的 print 调试法。
# the = suffix prints the expression too
total = sum(q for _, q in rows)
print(f'{total=}')
print(f'{len(rows)=}')
输出:
total=16
len(rows)=3
日期和其他类型
格式规范会交给对象本身处理,所以只要有 __format__ 方法,就有自己的一套迷你格式语言。日期用的是 strftime 格式码。
# dates and other __format__ types
import datetime
when = datetime.datetime(2026, 8, 20, 14, 30)
print(f'{when:%d %B %Y}')
print(f'{when:%H:%M}')
输出:
20 August 2026
14:30
输出花括号本身
写两遍就行。
# literal braces are doubled
print(f'{{not a placeholder}} but {name} is')
输出:
{not a placeholder} but ada is
补零、正负号和填充字符
宽度前面加 0,就用 0 补齐。加号会强制显示正负号。对齐符号前面的任意字符会成为填充字符。
# fill characters and signs
print(f'{42:05d}')
print(f'{42:+d} {-42:+d}')
print(f'{"title":*^20}')
输出:
00042
+42 -42
*******title********
要点
- 格式规范写在花括号里的冒号后面。
:,.2f能搞定大多数金额格式。f"{value=}"会同时打印表达式和值。- 想输出花括号本身,就写两个。
提醒一句:千万不要用 f-string 拼 SQL 或 shell 命令。数据库要用驱动自带的参数化支持,subprocess 要传列表。