有人可以解释这些 Python 字符串格式化程序吗

Can someone please explain these Python string formatters

我对 Python 字符串格式化程序 %d 和 %i 之间的区别感到困惑。 Python 手册页将它们解释为同一件事,“有符号整数十进制”- 混淆!

From the Python 'Built in Types' page

它们是完全相同的东西。

Python 继承了 C 的语法,您可以 scanf() 函数中使用相同的格式将输入解析为变量。然后,您可以使用 %i 接受带有 0x 前缀的十六进制格式整数、前面带有 0 的八进制表示法以及常规十进制(基数 10)整数,而 %d格式化程序严格只接受十进制整数输入。

然而,在使用 printf 函数输出时,您将使用 %x%o 将输出格式化为十六进制和八进制,明确地,总是,和 %d%i 只是同义词和输出十进制整数。 Python 继承了 printf 格式批发、别名和所有格式,即使 scanf 区别没有等效项。

请参阅 printf and scanf 联机帮助页。

较新的 Format Specification Mini-language (used in both the str.format() method and the format() function) 完全取消了 i 格式化程序;只有 d 留在那里。