擅长:python、mysql、java
<p>实际上,两种方法的速度都一样慢,但对于某些优化来说,这实际上是官方Python运行时(cPython)上的实现细节。在</p>
<p>Python中的字符串是不可变的,这意味着当您执行“str1+str2”操作时,Python必须创建第三个string对象,并将str1和str2中的所有内容复制到它身上,无论这些部分有多大。在</p>
<p>inplace操作符允许Python使用一些内部优化,这样str1中的所有数据都不必再被复制一次,甚至可能还允许一些缓冲区空间用于进一步的连接选项。在</p>
<p>当人们了解了语言的工作原理后,从小字符串构建大文本体的方法是用所有字符串创建一个Python列表,循环结束后,对传入所有字符串组件的<code>str.join</code>方法进行一次调用。即使是在Python实现中,这一速度也会一直很快,而且不依赖于能够触发的优化。在</p>
<pre><code>output = []
for ...:
output.append(line)
new_file = "\n".join(output)
</code></pre>