变量和列表的内存使用
如下代码,按我的理解,变量是给分配内存的,列表不单独开辟内存,是这样么?python这么设计的原因是什么呢,是因为列表可能占用内存大,为了节省内存么?>>> a= 3
>>> b=a
>>> a=a+1
>>> a
4
>>> b
3
>>> a=['1','2','3']
>>> b=a
>>> a.reverse()
>>> a
['3', '2', '1']
>>> b
['3', '2', '1']
>>> python 中变量赋值就是贴标签,重新赋值就是重新贴标签。
python中变量分两大类,一类是不可变类型变量,例如:数字,字符串等,一类是可变类型对象,例如:列表、元组、字典等
这两种类型的变量有很大的区别,之所以有很大的区别,是因为不可变类型对象没有修改变量的操作,你所看到的修改变量实际上就是重新赋值;可变类型的变量有修改变量的操作,例如列表有append、pop、remove等操作
可以看看我写的这个帖子:python细节之2、变量名与标签 变量的赋值与修改 变量也只是locals()这个字典的键罢了{:10_340:} 简单的理解就是;
变量的值存放在堆内存 然后把这个内存地址存入栈内存和变量名进行一个绑定
如果我们修改了一个变量的值 那么实际上就是重新开辟一个堆内存,创建一个值,然后把值的内存地址存入栈区重新和变量名绑定一下
列表的话不太一样.因为列表内存存放的实际上是每个元素的内存地址.而不是元素本身
不知道我的理解差了多少........
页:
[1]