gpt4 book ai didi

python - Python是否将字符串对象操作为写入样式的副本

转载 作者:太空狗 更新时间:2023-10-30 03:00:34 27 4
gpt4 key购买 nike

我注意到在 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com