我从一本书学习Python和跨越这个例子就是:宽度和精度使用*
>>> '%f, %.2f, %.*f % (1/3.0, 1/3.0, 4, 1/3.0)
# Result: '0.333333, 0.33, 0.3333'
不太明白这里发生了什么,尤其是在两者之间的“4”。
我从一本书学习Python和跨越这个例子就是:宽度和精度使用*
>>> '%f, %.2f, %.*f % (1/3.0, 1/3.0, 4, 1/3.0)
# Result: '0.333333, 0.33, 0.3333'
不太明白这里发生了什么,尤其是在两者之间的“4”。
我认为你的意思是这样的:
>>> '%f, %2.f, %.*f' % (1/3.0, 1.3, 4, 1/3.0)
'0.333333, 1, 0.3333'
4
是代替星号*
的使用通配符值。当扩展它将相当于:
>>> '%f, %2.f, %.4f' % (1/3.0, 1.3, 1/3.0)
哦,就是这样?那么扩展的表单是不是更可读? – 3zzy 2009-11-19 17:06:14
它可能更易读,但你可能不知道字段宽度是多少 – SilentGhost 2009-11-19 17:07:46
虽然更具可读性,但它在运行时允许较少的灵活性。 – 2009-11-19 17:08:15
您发布的行中有两个语法错误。 1.3.0不是有效的数字,并且字符串未关闭。
这是所述字符串格式的有效版本。
'%f, %2.f, %.*f' % (1/3.0, 1/3.0, 4, 1/3.0)
和输出:
'0.333333, 0.33, 0.3333'
我无法找到文件%* F在the official docs。然而,看起来它解析了4是你想要做下一个参数的小数位数。
例如:
'%.*f' % (5, 1/3.0)
返回
'0.33333'
和
'%.*f' % (6, 1/3.0)
返回
'0.333333'
它似乎是一种提供可变长度精度的方法,因此您可以允许用户指定它。
这是无效的python。你错过了字符串的结尾报价,我猜可能“1.3.0”部分应该是“1/3.0”。 – truppo 2009-11-19 16:59:21