我注意到在 python 中,字符串对象只保留一个副本。像下面的代码:
>>> s1='abcde'
>>> s2='abcde'
>>> s1 is s2
True
s1 和 s2 指向同一个对象。
当我编辑 s1 时,s2 仍然保留对象('abcde'),但 s1 指向一个新副本。这种行为喜欢写时复制。
>>> s1=s1+'f'
>>> s1 is s2
False
>>> s1
'abcdef'
>>> s2
'abcde'
那么python真的在字符串对象上使用写入机制的副本吗?
最佳答案
没有任何相关意义上的复制发生。您的新字符串是一个全新的字符串对象。这与您完成 s1 = 'abcdef'
没有什么不同。 Python 中的某些类型的对象允许您“就地”修改它们,但不能修改字符串。 (在 Python 中,字符串是不可变的。)
请注意,您的两个原始字符串是同一个对象这一事实是由于特定于实现的优化,并不总是如此:
>>> s1 = 'this is a longer string than yours'
>>> s2 = 'this is a longer string than yours'
>>> s1 is s2
False
关于python - Python是否将字符串对象作为写入样式的副本进行操作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28711888/