面试题答案
一键面试- 内存变化
- 首先,创建列表
[1, 2, 3]
,在内存中分配一块空间来存储这个列表对象。 - 变量
a
绑定到这个列表对象,即a
存储了该列表对象在内存中的地址。 - 执行
b = a
时,变量b
也绑定到了a
所指向的同一个列表对象,此时a
和b
都指向内存中存储[1, 2, 3]
的那块空间。 - 执行
a.append(4)
时,由于a
指向的列表对象是可变的,在原列表对象的内存空间中添加元素4
,此时列表变为[1, 2, 3, 4]
。因为b
与a
指向同一个列表对象,所以b
所指向的列表也变为[1, 2, 3, 4]
。
- 首先,创建列表
- Python动态类型语言变量绑定的体现
- 在Python中,变量没有预先定义的类型,变量是一个名字,它可以绑定到不同类型的对象。这里
a
和b
都是变量名,它们在赋值语句执行时才绑定到具体的列表对象。 - 当执行
b = a
时,b
只是获取了a
所绑定对象的引用,并没有创建新的列表对象。同样,a.append(4)
操作是直接在a
所绑定的列表对象上进行修改,由于b
与a
指向同一对象,所以能看到相同的变化,这体现了Python中变量动态绑定对象以及对象引用的特性。
- 在Python中,变量没有预先定义的类型,变量是一个名字,它可以绑定到不同类型的对象。这里