值类型与引用类型
int, str, tuple 值类型(不可变)
list,set,dict 引用类型(可变)
深刻理解, 底层到底发生了什么
>>> a = 1
>>> b = a
>>> a = a+1
>>> a = [1,2,3,4,5]
>>> b = a
>>> a[0] = '1'
>>> print(a)
['1', 2, 3, 4, 5]
>>> print(b)
['1', 2, 3, 4, 5]
有人说字符串不可变,但是下面的操作也没报错啊
>>> a = "hello"
>>> a = a + "world"
>>> print(a)
hellopython
其实变量a的地址已经发生了改变
>>> a = "hello"
>>> id(a)
140223821863984
>>> a = a + "world"
>>> id(a)
140223825435120
>>> b = "hello"
>>> id(b)
140223821863984
>>> b = b + "python"
>>> id(b)
140223825434416
str是不可变的,我们可以读取,但是不能改变
>>> "python"[0]
'p'
>>> "python"[0]='o'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'str' object does not support item assignment