为什么Python的str.format比string concat慢

时间:2014-11-06 11:55:51

标签: python

不是完美的基准,但

$python --version
Python 3.4.2
$ python -m timeit 'print("foo" + str(3.14) + "bar")'
100000 loops, best of 3: 16.4 usec per loop
$ python -m timeit 'print("foo{}bar".format(3.14))'
100000 loops, best of 3: 19.2 usec per loop

2 个答案:

答案 0 :(得分:5)

你是对的,使用format的人稍微更慢。但谁在乎?你不会在性能关键的应用程序中做这种事情,对吗?

如果您想要解释为什么format应该更慢,可能是因为它必须解析格式字符串。这比简单地将数字转换为字符串和连接更为复杂。我很惊讶,差异就像它一样小。

答案 1 :(得分:0)

由于.format()正在做的额外工作。

.format()实际上不是来自Formatter类的String类本身的工作,这就是为什么你会看到额外的几秒钟,它是'将工作卸载到一个专门的班级,完成所有繁重的工作。