%比我测试的格式性能更好。
测试代码:
Python 2.7.2:
import timeit
print 'format:', timeit.timeit("'{}{}{}'.format(1, 1.23, 'hello')")
print '%:', timeit.timeit("'%s%s%s' % (1, 1.23, 'hello')")
结果:
> format: 0.470329046249
> %: 0.357107877731
Python 3.5.2
import timeit
print('format:', timeit.timeit("'{}{}{}'.format(1, 1.23, 'hello')"))
print('%:', timeit.timeit("'%s%s%s' % (1, 1.23, 'hello')"))
后果
> format: 0.5864730989560485
> %: 0.013593495357781649
在Python2中,差异很小,而在Python3中,%比格式快得多。
感谢@Chris Cogdon提供的示例代码。
编辑1:
2019年7月在Python 3.7.2中再次测试。
结果:
> format: 0.86600608
> %: 0.630180146
没有太大区别。我想Python正在逐步改进。
编辑2:
在有人在评论中提到python 3的f-string之后,我在python 3.7.2下测试了以下代码:
import timeit
print('format:', timeit.timeit("'{}{}{}'.format(1, 1.23, 'hello')"))
print('%:', timeit.timeit("'%s%s%s' % (1, 1.23, 'hello')"))
print('f-string:', timeit.timeit("f'{1}{1.23}{\"hello\"}'"))
结果:
format: 0.8331376779999999
%: 0.6314778750000001
f-string: 0.766649943
似乎f-string仍然比%慢,但比格式好。