我正在从一本书中学习Python并且遇到了这个例子:
>>> '%f, %.2f, %.*f % (1/3.0, 1/3.0, 4, 1/3.0)
# Result: '0.333333, 0.33, 0.3333'
不太明白这里发生了什么,特别是中间的'4'。
答案 0 :(得分: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)
答案 1 :(得分:1)
您发布的行中有两个语法错误。 1.3.0不是有效数字,字符串未关闭。
这是所述字符串格式的有效版本。
'%f, %2.f, %.*f' % (1/3.0, 1/3.0, 4, 1/3.0)
和输出:
'0.333333, 0.33, 0.3333'
我找不到the official docs中%。* f的文档。但是,它似乎正在解析4是你要在下一个参数处进行多少个小数位。
例如:
'%.*f' % (5, 1/3.0)
返回
'0.33333'
和
'%.*f' % (6, 1/3.0)
返回
'0.333333'
这似乎是一种提供可变长度精度的方法,因此您可以允许用户指定它。