python中的不可变对象是否意味着它的值在它的概念之后不能改变?
是的。
如果是这种情况,当我们尝试改变它的值时会发生什么。
这个问题是无效的,因为你从不尝试改变它的值,因为没有办法改变尝试。
您真正要问的是,当我们分配给一个名为 value 的变量时会发生什么。
我希望您特别注意那里的“a”一词:多个变量可以命名相同的值。我还希望您特别注意“名称”这个词:Python 变量确实是名称——它们不存储值,而是为它们提供名称。
显然,现在“S”有了新的价值。
现在S
命名一个不同的值。
价值如何变化?
它没有。S
停止命名它曾经命名的名称,并开始命名一个新值。
python是否破坏了旧的字符串对象
如果没有其他名称,它可能有。如果一个值没有名字,它最终会被销毁。作为程序员,这不是您关心的问题。
并创造了一个具有新价值的新产品?
是的。
如果是这样,那么可变对象的行为如何?
The same way, when you assign to the name. Names are names, and values are values. (In this context, "object" and "value" mean the same thing.) Assignment is the process of causing a name to name a value. It doesn't matter if the object is mutable or not. Mutation is done in other ways. (Although you could make an argument that, for example, a list
is really a list of names, and you don't really mutate the list, but instead change the quantity of names and their referents.)