复习:
1 标签与地址的关系
变量类似于贴在抽屉中的一个标签,真正的内容是放在抽屉里的。
标签的作用类似于地址,只不过地址是给机器看的,标签是给人看的。获取变量的真正地址用id()来进行。
2 基础的数据类型
基础的数据类型有 数字类型和字符串,数字类型包含整型和浮点型
例如数字:1, 2, 3.0, 3.5
字符串:"1", "2", '3', '4.0', 'man'
3 较复杂的数据类型:列表list
a = [3, 5, 7,10]
4 创建变量的过程
a = 2
b = 3
c = "men"
d = [3, 5, 7, 10]
就是在类似一堆抽屉中放入对应的值,并贴上标签,如上面的变量对应的标签为a, b, c,d
二、不可变类型
像数字,字符串这样的基础数据类型,一旦值定下来了,对应的内存地址就固定了,我们将值对应内存地址不变的数据类型,称为不可变类型
例如:
a = 2
b = 2
c = "men"
d = "men"
print(id(a),id(b))
print(id(c),id(d))
修改a, b, c, d的值
a = 3
b = 3
c = 'dog'
d = 'dog'
print(id(a), id(b))
print(id(c), id(d))
可以发现a, b的地址是同一个地址,c,d地址也指赂同一个地址
修改了a,b,c,d的值,对应的地址也改变了。
也就是说对于不可变类型,其值一旦改变,对应的地址也就改变了
三、可变类型
像数组这样较复杂的数据类型,修改内部的值,变量对应的地址不会改变,这样的数据类型称为可变类型
a = [2, 3, 5, 10]
print(id(a), a)
a[0] = 9.9
print(id(a), a)
可以看到虽然修改了a[0]元素的值,a对应地址是没有改变的。
b = [1, 2, 3]
print(id(b), b)
c = [1, 2, 3]
print(id(c), c)
可以看到虽然b, c的值是一样的,但b,c对应的地址是不同的。
print(id(b[0]), id(c[0]))
print(id(b[1]), id(c[1]))
print(id(b[2]), id(c[2]))
可以看到虽然b, c的地址不一样,但其内部的元素的地址是一样的,也就是说最终也是存的不可变的内容。