变量实际存储的是什么?列表[1,2,3]是预存内存还是即时创建?
关于Python变量与内存引用的澄清
当你执行代码 a = [1, 2, 3] 时,这个列表[1, 2, 3]是你执行代码的瞬间在内存中创建的,变量a存储的是这个新创建的列表对象在内存中的引用(类似地址)。
具体过程拆解:
- 当Python解释器读到
[1, 2, 3]这个列表字面量时,会立即在内存中分配空间,创建包含三个元素的列表对象,把元素数据、列表的结构信息都存入这块内存。 - 紧接着,把这个列表对象的内存引用赋值给变量
a,从此a就指向了这块内存区域,通过a就能访问到对应的列表。
补充几个相关细节:
- 如果后续写
b = a,并不是把列表复制一份给b,而是把a存储的引用复制给b,所以a和b会指向同一个列表对象。比如执行a.append(4)后,b的值也会变成[1, 2, 3, 4]。 - 对于整数、字符串这类不可变小对象,Python会有优化机制(比如整数池、字符串驻留),提前创建一些常用对象复用,但你自定义的字面量列表(像
[1,2,3]这种)都是执行时即时创建的,不存在提前存在内存里的情况。
内容的提问来源于stack exchange,提问作者Python Beginner
相关产品推荐
相关产品推荐

