Python字符串格式化进阶_fstring与format说明【指导】

推荐优先使用f-string(Python 3.6+),因其简洁、高效、可读性强;format()作为兼容性更强的备选,适用于动态格式或模板复用场景。

Python字符串格式化推荐优先使用f-string(Python 3.6+),它更简洁、高效、可读性强;format()作为兼容性更强的备选,适合需要动态格式或复用模板的场景。

f-string:最简最直接的写法

f-string以fF开头,花括号内直接写变量名或表达式,运行时实时求值。

  • 支持任意合法表达式:如f"{x + y:.2f}"f"{name.upper()} is {age * 12} months old"
  • 可嵌入函数调用、属性访问、索引操作,比如f"{user.name.split()[0]}@example.com"
  • 调试友好:在变量名后加=可同时显示名称和值,例如f"{x=}, {y=}""x=5, y='hello'"
  • 注意:花括号内不能有未配对的引号或反斜杠,也不支持反向引用或嵌套f-string

format():灵活可控的通用方案

str.format()通过位置、关键字或混合方式填充占位符,适合格式逻辑较复杂或模板需复用的情况。

  • 位置参数:"{} {}".format("Hello", "World")"Hello World"
  • 关键字参数:"{greeting}, {target}!".format(greeting="Hi", target="there")
  • 格式说明符统一写在冒号后:"{:.3f}".format(3.14159)"3.142""{:04d}".format(7)"0007"
  • 支持嵌套字段名:"{user.name} has {user.score} points".format(user=player)

什么时候不用f-string?

并非所有场景都适合f-string:

立即学习“Python免费学习笔记(深入)”;

  • 需要提前定义模板再多次填充(如日志消息模板),用str.format()更清晰
  • 格式字符串来自用户输入或配置文件,为避免代码注入风险,必须用format()%格式化,绝不可拼接进f-string
  • 项目需兼容Python format()或旧式%语法

简单对比与建议

同功能下,f-string性能最优,书写最少;format()语义更显式,扩展性更好。日常开发中:

  • 单次拼接、变量少、逻辑直白 → 用f-string
  • 多处复用同一模板、含条件格式、需延迟绑定 → 用format()
  • 避免混用:同一项目内尽量统一风格,减少阅读成本