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

时间:2018-07-31 07:54:24

标签: 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!

给予

pi=3.14, e=2.7183
pi=3.14, e=3.1416 wrong!

1 个答案:

答案 0 :(得分:1)

冒号前的数字是参数的索引,因此在您的第二个print{0:.2f}中,都将打印索引0的相同参数,即{{1 }}。

摘录自Format String Syntax

{0:.4f}

请注意math.pi之前的replacement_field ::= "{" [field_name] ["!" conversion] [":" format_spec] "}" field_name ::= arg_name ("." attribute_name | "[" element_index "]")* ,它可以是元素索引。