我正在浏览谷歌的python介绍,并且发现声明s * 3比s s s类型为字符串更快.
出现这种情况的原因是什么?
我用Google搜索并找到了which is faster s+=’a’ or s=s+’a’ in python.但这并没有帮助
解决方法:
因为s * 3是一个操作,而s s是两个操作;它真的是(s s)s,创建一个额外的字符串对象,然后被丢弃.
您可以通过使用dis
查看每个生成的字节码来查看差异:
s s:
3 0 LOAD_FAST 0 (s)
3 LOAD_FAST 0 (s)
6 BINARY_ADD
7 LOAD_FAST 0 (s)
10 BINARY_ADD
11 RETURN_VALUE
s * 3:
3 0 LOAD_FAST 0 (s)
3 LOAD_CONST 1 (3)
6 BINARY_MULTIPLY
7 RETURN_VALUE