在这个SO帖子里,https://softwareengineering.stackexchange.com/questions/304445/why-is-s-better-than-for-concatenation,据说%s比+好。但我的测试显示相反。对于字符串连接,%s是否真的比+更好?
import string
import random
R = 10
def doit1():
x =""
for _ in range(R):
x += random.choice(string.letters)
def doit2():
y = ""
for _ in range(R):
y = "%s%s" % (y, random.choice(string.letters))
if __name__ == '__main__':
import timeit
print(timeit.timeit("doit1()", setup="from __main__ import doit1"))
print(timeit.timeit("doit2()", setup="from __main__ import doit2"))
是给我下面的输出:
➜ Documents python3.5 string_test.py
30.200247984997986
33.85921495900038
好像他们几乎是相同的。我在这里错过了什么吗?
我想像这种偏好是主要基于*可读性*而不是性能,这也取决于运行时间和其他因素。 – superuser0
所有用户投票权下降。定时比较器功能始终与静态变量一起工作。 'y =“%s%s”%(y,random.choice(string.letters))'这是个玩笑? – dsgdfg
另一点:'x + = random.choice(string.letters)'where is all index? – dsgdfg