Python笔记之 f-string 和 str.format() 方法

292 阅读2分钟

在 Python 中,f-string(格式化字符串字面量)和 str.format() 方法都是用来格式化字符串的,但它们在语法和性能上有一些不同。以下是它们之间的一些主要区别:

f-string(格式化字符串字面量)

  1. 语法

    • f-string 使用前缀 f 或 F,然后在字符串中使用花括号 {} 包围表达式,这些表达式会被求值并嵌入到字符串中。
    • 例如:f"I have {value} {key}(s)."
  2. 易用性

    • f-string 的语法更简洁,更直观,易于编写和阅读。
    • 变量和表达式直接嵌入到字符串中,不需要额外的参数传递。
  3. 性能

    • f-string 在 Python 3.6 及以上版本中被引入,它在内部使用更快的机制来格式化字符串,通常比 str.format() 方法更快。
  4. 功能

    • f-string 支持表达式和复杂的逻辑,例如条件表达式、循环等。
    • 例如:f"{key} has {value * 2} items."

str.format() 方法

  1. 语法

    • str.format() 方法使用 {} 作为占位符,并通过 format() 方法传递参数。
    • 例如:"I have {} {}(s).".format(value, key)
  2. 易用性

    • str.format() 方法需要将变量作为参数传递给 format() 方法,这在某些情况下可能会使代码更长。
    • 但是,它提供了更多的灵活性,例如在字符串中多次使用同一个变量。
  3. 性能

    • str.format() 方法在早期版本的 Python 中被广泛使用,但在性能上通常不如 f-string。
  4. 功能

    • str.format() 方法支持命名参数和位置参数,提供了更多的灵活性。
    • 例如:"I have {0} {1}(s).".format(value, key) 或 "I have {val} {key}(s).".format(val=value, key=key)

总结

  • f-string:更简洁、更直观、通常更快,适用于 Python 3.6 及以上版本。
  • str.format() :更灵活、适用于所有 Python 版本,但在性能上可能不如 f-string。

在大多数情况下,如果你使用的是 Python 3.6 或更高版本,推荐使用 f-string,因为它更简洁、更易读、通常更快。如果你需要与早期版本的 Python 兼容,或者需要更多的灵活性,str.format() 方法也是一个很好的选择。