第一代:% 格式化(远古)
name = "WadeLy"
age = 30
"我叫 %s, 今年 %d 岁" % (name, age)
# '我叫 WadeLy, 今年 30 岁'
C 语言风格,%s(字符串)、%d(整数)、%f(浮点)。今天只在维护老代码时遇到。
第二代:.format() 方法
"我叫 {}, 今年 {} 岁".format(name, age)
"我叫 {0}, 今年 {1} 岁".format(name, age) # 用下标
"我叫 {name}, 今年 {age} 岁".format(name=name, age=age) # 关键字
比 % 易读,但还是啰嗦。
第三代:f-string(Python 3.6+,今天的标准)
直接在引号前加个 f:
f"我叫 {name}, 今年 {age} 岁"
# '我叫 WadeLy, 今年 30 岁'
花括号里可以放任何表达式:
f"明年 {age + 1} 岁"
f"姓名长度: {len(name)}"
f"大写: {name.upper()}"
f-string 的格式规范
冒号后面写格式:
pi = 3.14159265
f"{pi:.2f}" # '3.14' 保留 2 位小数
f"{pi:.0f}" # '3'
f"{1234567:,}" # '1,234,567' 千分位
f"{0.85:.1%}" # '85.0%' 百分比
f"{42:>10}" # ' 42' 右对齐宽 10
f"{42:<10}" # '42 ' 左对齐
f"{42:^10}" # ' 42 ' 居中
f"{42:0>5}" # '00042' 前补零
调试用法(Python 3.8+)
变量名和值一起打印:
x = 42
print(f"{x=}") # 'x=42'
print(f"{x*2=}") # 'x*2=84'
排查问题时神器。
一句话总结
今天写代码只用 f-string。 % 和 .format() 看得懂就行。
下一篇讲输入输出的进阶用法。