Sha*_*non 5 python object immutability
python中的不可变对象是否意味着它的值在受孕后无法更改?如果是这种情况,当我们试图改变其价值时会发生什么.
让我试着通过一个例子来解释我的怀疑.
例如,我S用值初始化了一个String对象"Hello World".
S = 'Hello World'
Run Code Online (Sandbox Code Playgroud)
然后我输入了这行,
S = 'Hello Human'
Run Code Online (Sandbox Code Playgroud)
所以,当我问翻译时,它告诉我S的价值"Hello Human".显然,现在'S'有一个新的价值.
价值是如何变化的?python是否销毁了旧的字符串对象并使用新值创建了一个新的字符串对象?或者它只是改变了旧对象的值.这与字符串对象是不可变的这一事实有什么关系吗?如果是这样,那么可变对象如何表现?
Python停止S指向旧的字符串对象并使其指向新的字符串对象
>>> S="Hello World"
>>> id(S)
32386960
>>> S="Hello Human"
>>> id(S)
32387008
>>>
Run Code Online (Sandbox Code Playgroud)
你不能改变不可变对象,所以即使你认为你很可能(例如与+=操作员),你也不是
>>> S="Hello"
>>> id(S)
32386912
>>> S+=" World"
>>> id(S)
32386960
>>>
Run Code Online (Sandbox Code Playgroud)