Tas*_*man 3 python string operators
我正在浏览谷歌的python介绍并且遇到了s * 3比在类型的s + s + s地方更快的声明.sstring
出现这种情况的原因是什么?
我用Google搜索并发现python中的s + ='a'或s = s +'a'更快.但这没有帮助
jon*_*rpe 18
因为s * 3是一个操作,而是s + s + s两个操作; 它确实是(s + s) + s,创建一个额外的字符串对象然后被丢弃.
您可以通过dis查看每个生成的字节码来查看差异:
s + 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
Run Code Online (Sandbox Code Playgroud)
s * 3:
3 0 LOAD_FAST 0 (s)
3 LOAD_CONST 1 (3)
6 BINARY_MULTIPLY
7 RETURN_VALUE
Run Code Online (Sandbox Code Playgroud)