MST

星途 面试题库

面试题:Python动态类型语言变量绑定内存原理相关

在Python中,有如下代码:a = [1, 2, 3]; b = a; a.append(4)。请解释a和b在内存中的变化,以及Python动态类型语言变量绑定在这个过程中是如何体现的。
39.4万 热度难度
编程语言Python

知识考点

AI 面试

面试题答案

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