面试题答案
一键面试- 内存地址变化情况:
- 最初,
a = [1, 2, 3]
创建了一个列表对象,a
指向这个列表对象的内存地址。 - 然后
b = a
,此时b
也指向a
所指向的同一个列表对象的内存地址,即a
和b
的内存地址相同。 - 执行
a.append(4)
后,列表对象在原有基础上进行了修改,添加了元素4
。由于a
和b
指向同一个列表对象,所以a
和b
的内存地址依然相同,没有发生变化。
- 最初,
- 原因解释:
- 在Python中,变量名是对象的引用。当
b = a
时,实际上是让b
引用了a
所指向的对象,而不是创建一个新的列表对象并复制a
的内容。所以a
和b
是对同一个列表对象的不同引用。当对列表对象(通过a
)进行修改时,由于b
引用的也是这个对象,所以通过b
访问该对象时也能看到修改后的结果。
- 在Python中,变量名是对象的引用。当
- 使用内置函数验证:
- 可以使用
id()
函数来获取对象的内存地址。
a = [1, 2, 3] b = a print(id(a)) print(id(b)) a.append(4) print(id(a)) print(id(b))
- 在上述代码中,在
a.append(4)
前后分别打印a
和b
的内存地址(通过id()
函数获取),会发现a
和b
在整个过程中的内存地址始终相同,验证了上述说法。
- 可以使用