跳到内容

format-literals (UP030)

源自 pyupgrade linter。

有时提供修复。

作用

检查格式化字符串中不必要的位置索引。

为什么这不好?

在 Python 3.1 及更高版本中,格式化字符串可以使用隐式位置引用。例如,"{0}, {1}".format("Hello", "World") 可以重写为 "{}, {}".format("Hello", "World")

如果位置索引完全按顺序出现,则可以省略它们,以支持自动索引,从而提高可读性。

示例

"{0}, {1}".format("Hello", "World")  # "Hello, World"

建议改为

"{}, {}".format("Hello", "World")  # "Hello, World"

此修复被标记为不安全,因为

  • 附加到参数的注释不会被移动,这可能导致注释与实际参数不匹配。
  • 如果参数具有副作用(例如,print),则重新排序可能会改变程序的行为。

参考