str.format()可以实现简单的字符串格式化,但是这种格式化方式存在一些怪癖,比如它不支持接收元组(tuple)、字典(dict)等数据类型作为参数,这是非常不方便的。
使用字符串内置操作符(%)进行字符串格式化%操作符是字符串对象唯一的内置操作,也称为字符串格式化或插值运算符。该接口提供了一种更强大、灵活和可扩展的方法来格式化文本。格式字符串中的% 转换规范将会被替换为0个或多个元素的值,效果类似于在C语言中使用sprintf()。
如果格式字符串需要单个参数,那么替换值可以是单个非元组对象;否则,替换值必须是具有由格式化字符串指定的条目数量的元组,或者是单个映射对象(例如,字典)。
>>> 'The sum of 2 + 3 is: %d' % 5 # 格式化字符串只需要1个参数,替换值可以是的那个非元组字符 'The sum of 2 + 3 is: 5' >>> >>> a = 2 >>> b = 3 >>> '%d + %d = %d' % (a, b, a+b) # 格式化字符串需要n(n > 1)个参数,替换值需要是具有n个元素的元组 '2 + 3 = 5' >>> '%(a)d + %(b)d = %(c)d' % {'a': a, 'b': b, 'c': a+b} # 格式化字符串需要n(n > 1)个参数,替换也可以是具有n个元素的映射对象 '2 + 3 = 5' >>>