1

我正在从一本书中学习 Python,并遇到了这个例子:

>>> '%f, %.2f, %.*f % (1/3.0, 1/3.0, 4, 1/3.0)
# Result: '0.333333, 0.33, 0.3333'

不太明白这里发生了什么,尤其是中间的“4”。

4

2 回答 2

3

我想你的意思是这样的:

>>> '%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)
于 2009-11-19T17:03:08.477 回答
1

您发布的行中有两个语法错误。1.3.0 不是有效数字,并且字符串未关闭。

这是所述字符串格式的有效版本。

'%f, %2.f, %.*f' % (1/3.0, 1/3.0, 4, 1/3.0)

和输出:

'0.333333, 0.33, 0.3333'

我在官方文档中找不到关于 %.*f的文档。但是,它似乎将 4 解析为您想要在下一个参数处执行的小数位数。

例如:

'%.*f' % (5, 1/3.0)

返回

'0.33333'

'%.*f' % (6, 1/3.0)

返回

'0.333333'

这似乎是一种提供可变长度精度的方法,因此您可以允许您的用户指定它。

于 2009-11-19T17:01:39.743 回答