什么时候pythonselect实习一个string

>>> s1 = "spam" >>> s2 = "spam" >>> s1 is s2 True >>> q = 'asdalksdjfla;ksdjf;laksdjfals;kdfjasl;fjasdf' >>> r = 'asdalksdjfla;ksdjf;laksdjfals;kdfjasl;fjasdf' >>> q is r False 

s1 is s2有多less个字符? s1 is s2False ? 限制在哪里? 也就是说,我想知道在Python开始制作单独的拷贝之前,一个string需要多长时间。

stringinterning是特定于实现的,不应该依赖,如果要检查两个string是否相同,则使用相等性testing。

如果你想,为了一些奇怪的原因,强迫比较是真实的,然后使用实习生function:

 >>> a = intern('12345678012345678901234567890qazwsxedcrfvtgbyhnujmikolp')
 >>> b = intern('12345678012345678901234567890qazwsxedcrfvtgbyhnujmikolp')
 >>> a是b
真正

这里是一段关于从CPython 2.5.0源文件(stringobject.h)

 /* ... ... This is generally restricted to strings that **"look like" Python identifiers**, although the intern() builtin can be used to force interning of any string ... ... */ 

因此,string只包含下划线,数字或字母将被禁止。 在你的例子中, q和`r包含; ,所以他们不会被拘留。