擅长:python、mysql、java
<p>实际上,intern会在一组已实习的字符串中查找(或存储(如果不存在)该字符串,因此所有已实习的实例将共享相同的标识。您可以用查找此字符串的一次性成本换取更快的比较(只需检查标识,而不必比较每个字符,比较就可以返回True),并减少内存使用。</p>
<p>然而,python将<a href="http://guilload.com/python-string-interning/" rel="nofollow noreferrer">automatically intern strings that are small, or look like identifiers</a>,因此您可能会发现您没有任何改进,因为您的字符串已经在幕后被截获。例如:</p>
<pre><code>>>> a = 'abc'; b = 'abc'
>>> a is b
True
</code></pre>
<p>在过去,一个缺点是,实习的字符串是永久的。一旦被实习,字符串内存就永远不会被释放,即使在所有引用都被删除之后。不过,我认为这不再适用于较新版本的python。</p>