刚刚学习的格式化字符串的语法在 Python 的所有版本中都可以正常工作。但是在 Python 2.6 及之后的版本中,有一个新的格式化方法。因为这本书中使用的是 Python 2.7,所以我想我们也应该看一下这个新方法。你可能会在 Python 代码中见到它,所以这样你起码会知道它是什么意思。你可以自行决定使用新的还是旧的语法来格式化字符串。
format
方法
(在 Python 2.6 及之后的版本中)Python 字符串有一个名为 format
的方法。它的工作方式和你在前面见过的 %
格式化字符串很像。事实上,格式化说明符号 f
、g
、e
等都是一样的,只不过使用方式稍有区别。最好用例子来说明。
下面是旧的方法:
print 'I got %.1f in math, %.1f in science' % (math, science)
下面是新的方法:
print 'I got {0:.1f} in math, {1:.1f} in science'.format(math, science)
在这种新方法中,格式化说明符被放在花括号中,而不再以 %
开头。0
和 1
告诉 Python 要格式化的是元组中的哪个变量。Python 计数从 0 开始,所以元组中第一个元素(变量 math
)的索引是 0,第二个元素(变量 science
)的索引是 1。然后使用 .1f
,其用法和旧方法中一样。
这就是新方法的全部内容。你可以像旧方法中用 % 格式化一样,将格式化后的字符串存为一个变量:
distance = 149597870700myString = 'The sun is {0:.4e} meters from the earth'.format(distance)
因为你不再使用 %
来区分格式化字符串,所以如果要打印一个 %
的话,也不需要再做任何特殊工作:
>>> print 'I got {0:.1f}% in math'.format(math)I got 87% in math
Python 程序员们会觉得使用 format
语法更好,尤其是在 Python 3 中,但你可以自由选择。本书中的例子都使用 %
语法。