【发布时间】:2020-04-12 20:20:21
【问题描述】:
我了解不可变对象不能原地更改。创建一个新对象并将其重新分配给相同的变量名称。这样,我们可以保持与变量的关联。在内部,变量指向不同的对象。
>>> string = 'object'
>>> old_id = id(string)
>>> old_id
4452633584
>>> string = 'new' + string
>>> new_id = id(string)
>>> new_id
4501338544
>>> old_id == new_id
False
在上面的示例中,Python 是否会创建一个 可变 的 string 克隆以连接到 'new',然后在重新分配给 string 之前使这个新对象不可变?
我不明白不能就地更改的对象如何也可以被操作。
难道 Python 不需要改变一个可改变的东西来产生一个新的东西吗?如果我想把钉子钉在一块木头上,但那块木头是不可改变的,我怎么会得到一块被锤过的木头呢?
【问题讨论】:
-
看起来该字符串变量提供了值“对象”,并且与“新”连接,并且字符串变量根据您的代码重新分配了这个新值。所以它是 python 字符串加值而不是操作实际的字符串对象。
标签: python python-3.x immutability mutable