Python 2.7 为什么这种错误的python格式会产生这种结果而不是异常?

Python 2.7 为什么这种错误的python格式会产生这种结果而不是异常?,python-2.7,format,Python 2.7,Format,我发现了一个错误,原因是:的格式不正确 但我还不明白这种行为。为什么第二行生成两个pi(错误的第二个值),但格式正确,而不是引发异常 import math data = math.pi, math.e print 'pi={:0.2f}, e={:0.4f}'.format(*data) print 'pi={0:.2f}, e={0:.4f} wrong!'.format(*data) # wrong! 给予 冒号前的数字是参数的索引,因此在第二个print中,{0.2f}和{0.

我发现了一个错误,原因是
的格式不正确

但我还不明白这种行为。为什么第二行生成两个pi(错误的第二个值),但格式正确,而不是引发异常

import math
data  = math.pi, math.e

print 'pi={:0.2f}, e={:0.4f}'.format(*data)
print 'pi={0:.2f}, e={0:.4f} wrong!'.format(*data)   # wrong!
给予


冒号前的数字是参数的索引,因此在第二个
print
中,
{0.2f}
{0.4f}
都打印索引0的相同参数,即
math.pi

摘录自:


请注意
之前的
字段\u name
,它可以作为元素索引。

非常好,谢谢。我做了大量的数字工作,但直到最近才懒得格式化文本,然后是旧样式对新样式。。。这个简明的解释正是我所需要的。试试另一个?
pi=3.14, e=2.7183
pi=3.14, e=3.1416 wrong!
replacement_field ::=  "{" [field_name] ["!" conversion] [":" format_spec] "}"
field_name        ::=  arg_name ("." attribute_name | "[" element_index "]")*