我对字符串格式中的以下 Python 2.7 和 Python 3.3 行为感到困惑。这是一个关于逗号运算符如何与字符串表示类型交互的挑剔细节问题。
>>> format(10000, ",d")
'10,000'
>>> format(10000, ",")
'10,000'
>>> format(10000, ",s")
ValueError: Cannot specify ',' with 's'.
>>> "{:,}".format(10000)
'10,000'
>>> "{:,s}".format(10000)
ValueError: Cannot specify ',' with 's'.
令我困惑的是为什么,
变体有效,没有明确的字符串表示类型。文档说,如果您省略类型,则它是“与 相同” s
。然而在这里,它的行为与s
.
我认为这只是一个皱纹/角落案例,但这种语法在文档中用作示例:'{:,}'.format(1234567890)
. 当字符串表示类型被省略时,Python 中是否隐藏了其他“特殊”行为?也许代码真正在做的是检查被格式化的东西的类型而不是“same as s”?