所有的赋值其实都是把一个变量指向一个内存位置,这个内存位置里储存着数据。
list、dict、set三个可变对象的变其实是数据的变化。
对于不可变类型,你同样的可以把它重新赋值,但是其实指向的就是另一个内存空间,原来那个空间的数据没有变化。
而索引其实已经指向了一个内存位置,因此改变的其实是数据而不是变量。
比如有一个list[]
,我们将其赋值给a
a = []
然后a其实是可以改变的,重新指向一个str或者int之类的,a = ‘'
但是如果是a[i]则相当于改变了i这个索引位置的数据,因此如果是tuple类型,那么你就不可以改,比如一个tuple(),b=()
b = ‘'
是可以的
b[i]= ..
则不可以
>>> a = 'adafs'
>>> b = a
>>> b
'adafs'
>>> c = b
>>> c
'adafs'
>>> b = '132'
>>> c
'adafs'
>>> ```
b = [1,2]
c = b
b[0]=2
c
[2, 2]
网友评论