Python f-string 格式化字符串入门:让输出更省心

写程序经常要把变量拼进文字里输出。Python 早期用 % 格式化,后来有了 str.format(),但两者写起来都略显啰嗦。从 Python 3.6 开始,官方推荐用 f-string(格式化字符串字面量),一行就能把变量、表达式甚至格式要求都写清楚。这篇带你把 f-string 的常用玩法过一遍。

基本用法:加个 f 前缀

在字符串前加 f,就能用花括号直接嵌入变量:

name = "小明"
age = 18
print(f"我叫{name},今年{age}岁")
# 输出:我叫小明,今年18岁

花括号里不限于变量,写任意表达式都行:

a, b = 3, 5
print(f"{a} + {b} = {a + b}")
# 输出:3 + 5 = 8
print(f"名字大写:{name.upper()}")
# 输出:名字大写:小明

如果只想输出花括号本身,写两个 {{ 和 }} 即可。

控制小数位数

数字后面加 : 和格式说明符,最常用的是 .nf 保留 n 位小数:

pi = 3.14159265
print(f"圆周率约等于 {pi:.2f}")
# 输出:圆周率约等于 3.14

price = 45.6
print(f"打八折:{price * 0.8:.1f} 元")
# 输出:打八折:36.5 元

千分位与百分比

金额加千分位逗号,比例转百分比,都是一行的事:

population = 1412600000
print(f"人口:{population:,}")
# 输出:人口:1,412,600,000

ratio = 0.856
print(f"正确率:{ratio:.1%}")
# 输出:正确率:85.6%

.1% 会自动乘以 100 并补上百分号,比手动拼接方便得多。

对齐与填充

做简易表格时,> 右对齐、< 左对齐、^ 居中,数字表示总宽度:

items = [("键盘", 199), ("显示器", 1299), ("鼠标", 59)]
print(f"{'商品':<8}{'价格':>8}")
for name, p in items:
    print(f"{name:<8}{p:>8}")
# 输出:
# 商品        价格
# 键盘        199
# 显示器     1299
# 鼠标         59

还可以指定填充字符,比如用 * 补位:

print(f"{42:*>8}")
# 输出:******42

日期格式化

f-string 能直接调用对象的 __format__,日期类对象尤其好用:

from datetime import datetime
now = datetime.now()
print(f"现在是 {now:%Y-%m-%d %H:%M}")
# 输出:现在是 2026-10-03 23:15

调试利器:等号语法

Python 3.8 之后,花括号里写 变量= 会同时输出变量名和值,排查问题时非常好用:

x = 27
y = 3
print(f"{x=}")
# 输出:x=27
print(f"{x / y = }")
# 输出:x / y = 9.0

小结

f-string 的核心就三点:加 f 前缀、花括号里写变量或表达式、冒号后面跟格式说明符。常用的格式符记住这几个就够日常用了:.2f 保留两位小数、:, 千分位、.1% 百分比、>10 右对齐宽度 10。写新代码时优先用 f-string,可读性和性能都比 % 和 format 更好。