推荐使用f-string,它是python 3.6+最简洁高效、可读性强的字符串格式化方式,支持表达式求值、调试语法、高性能编译优化及多行书写。

Python字符串格式化推荐用f-string(格式化字符串字面量),它是Python 3.6+引入的最简洁、高效且可读性最强的方式。
f-string写法直观,变量嵌入一目了然
直接在字符串前加f或F,花括号内写变量名或表达式,运行时自动求值并替换。
-
对比旧写法:不用再记
%s、.format()的位置和顺序,也不用重复传参 -
支持任意表达式:如
f"{name.upper()} is {age + 1} next year",无需提前计算或拆分 -
调试友好:写
f"{x=}"(Python 3.8+)会输出x=123,快速定位值
f-string性能明显优于其他格式化方式
底层实现为编译期优化,比%格式化快约10%,比str.format()快约30%(尤其在循环或高频拼接场景中)。
- 不涉及函数调用开销,无额外对象创建(如
Formatter实例) - 表达式在运行时求值,但字符串结构本身在编译阶段已确定,效率接近普通字符串
- 适合日志、模板生成、API请求拼接等对性能敏感的场景
f-string天然支持多行与缩进,适合复杂内容
配合括号换行,可自然写出清晰易维护的长字符串,无需手动拼接或三引号内硬编码变量名。
立即学习“Python免费学习笔记(深入)”;
- 例如生成SQL或HTML片段:
f"""SELECT * FROM users<br> WHERE age > {min_age}<br> AND status = '{status}'""" - 表达式可跨行书写(需用括号包裹),提升可读性
- 避免因缩进导致的空格污染——缩进只影响代码排版,不影响最终字符串内容
注意事项与兼容边界
f-string虽强大,但需注意几点限制:
- 不能在f-string中使用反斜杠(如
f"hello\nworld"会报语法错误),需改用普通字符串拼接或chr(10) - 花括号内不能有未配对的引号或注释,也不能嵌套f-string(但可嵌套其他格式化结果)
- 不支持Python 3.5及更早版本,若需兼容旧环境,建议降级用
.format()或%(但应尽量升级解释器)










