为什么 sys.intern() 无法实习该字符串?
>>> from sys import intern
>>> "abcd"[:-1] == "abc"
True
>>> "abcd"[:-1] is "abc"
False
>>> intern("abc")
'abc'
>>> "abcd"[:-1] is "abc"
False # Expected True
(在 CPython 3.7.4 上)
最佳答案
字符串文字已经被保留,它是您需要手动保留的计算表达式。
from sys import intern
print("abcd"[:-1] is "abc") # False
print(intern("abcd"[:-1]) is "abc") # True
print("abcd"[:-1] is "abc") # False
intern
并不意味着“每当程序中的任何位置生成此字符串时,都将其更改为驻留引用”,它只是返回给定字符串的驻留引用。
s1 = "abc"
s2 = "abc"
s3 = "abcd"[:-1]
s4 = intern(s3)
for s in [s1, s2, s3, s4]:
print(id(s))
140002991598512
140002991598512
140002990838576
140002991598512
关于python - sys.intern() 无法在切片时实习字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67947294/