在Python中,String是不可变的,那么为什么在Python中允许以下操作?
a = 'Hello'
a = 'Hi'
答案 0 :(得分:3)
因为a
是字符串的引用/句柄(如果您愿意,类似于指针),而不是字符串。您甚至可以检查内存地址以确保。
>>> a = "hello"
>>> id(a)
140102378280544 # memory address (not exactly but that's irrelevant to the topic)
>>> a = 'hii'
140102388086864 # different memory address than before
Python中的字符串是不可变的,因为它只存储在一个地方(大部分),因此无法进行变异。
>>> a = 'country'
>>> b = 'country'
>>> id(a) == id(b)
True
>>> a is b
True
答案 1 :(得分:1)
>>> a = 'Hello'
>>> id(a)
4519028800
>>> a = 'Hi'
>>> id(a)
4519896088
不是同一个变量......虽然我必须说id
的值只是最好的指示。
当您尝试将文字重新分配给a
时,您不会更改字符串。字符串保持不变。 a
指向的引用有哪些变化。