Python 2.7中的逗号和字符串string.format()

Nel*_*son 5 python string-formatting

我对String格式化中的以下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'.
Run Code Online (Sandbox Code Playgroud)

让我感到困惑的是,变体的工作原理,没有明确的字符串表示类型.该文档说,如果省略类型,它的"同为s".然而在这里它的表现与众不同s.

我认为这只是一个皱纹/角落的情况,但这个语法在文档中用作示例:'{:,}'.format(1234567890).当省略字符串表示类型时,Python中是否隐藏了其他"特殊"行为?也许代码"与s相同"代码实际上在做的是检查被格式化的东西的类型?