Python字符串格式化方法比较 | AI生成和翻译

Home 2026.04

问题:在Python中格式化字符串时,哪种方法更好?

答案:

这取决于你关注什么(可读性、性能、日志记录、兼容性)。没有一种方法是普遍“最佳”的,但在现代Python中,存在一个明确的默认选择。


1. 现代最佳选择:f-strings(✅ 推荐)

name = "Alice"
age = 25
msg = f"{name} is {age} years old"

为何这是最佳选择:

f"{name.upper()} is {age + 1} next year"

👉 这是 Python 3.6+ 的默认选择


2. .format()(旧方法,灵活,但现在较少使用)

msg = "{} is {} years old".format(name, age)

或:

msg = "{name} is {age}".format(name=name, age=age)

优点:

缺点:

👉 如今:主要用于遗留/兼容性场景


3. % 格式化(旧式)

msg = "%s is %d years old" % (name, age)

优点:

缺点:

👉 仅用于日志记录,不要用于通用字符串格式化。


4. 字符串拼接(+

msg = name + " is " + str(age) + " years old"

缺点:

👉 在几乎所有情况下都应避免使用。


5. 性能对比(大致直觉)

从最快到最慢(通常):

f-string  ≥  % formatting  >  .format()  >  拼接

但除非在紧密循环中,否则差异很小。


6. 重要例外:日志记录

尽管f-strings通常是首选:

logging.info(f"User {name}")   # ❌ 不理想

应使用:

logging.info("User %s", name)  # ✅ 正确

因为日志记录采用延迟格式化


7. 最终建议

使用以下规则:


8. 简单直觉


如果你愿意,我可以展示.format()仍然优于f-strings的边缘情况(存在一些微妙情况)。


Back Donate