可变对象 vs 不可变对象(Python)
来源:互联网 发布:安卓源码大师 编辑:程序博客网 时间:2024/05/02 11:25
Python 在 heap 中分配的对象分成两类:可变对象和不可变对象。所谓可变对象是指,对象的内容是可变的,例如 list。而不可变的对象则相反,表示其内容不可变。
- 不可变对象:int,string,float,tuple
- 可变对象 :list,dictionary
1. 不可变对象
由于 Python 中的变量存放的是对象引用(reference),所以对于不可变对象而言,尽管对象本身不可变,但变量的对象引用是可变的(相当于 C 语言中指向常量的指针,指针可以指向新的内存空间,但之前指向的常量不可改变)。运用这样的机制,有时候会让人产生糊涂,似乎可变对象变化了。如下面的代码:
由上可知, 不可变的对象的特征没有变,依然是不可变对象,变的只是创建了新对象,改变了变量的对象引用,指向新的不可变对象。作如下验证:
>> a = 1>> id(a)30310136L>> b = 1>> id(b)30310136L # 也即因为 a,b 都指向的是不可变对象,python 解释器就不再开辟新的内存空间,a、b 共同指向同一个不可变对象;>> a += 1>> id(a)30310112L # a 指向了另外的内容>> id(b)30310136L
2. 可变对象
其对象的内容是可以变化的。当对象的内容发生变化时,变量的对象引用是不会变化的(直接上原始内存空间处进行修改)。如下面的例子。
>> m = [5, 9]>> id(m)155821128L>> m += [6]>> id(m)155821128L
Python基础:Python可变对象和不可变对象
0 0
- 可变对象 vs 不可变对象(Python)
- (python)可变对象/不可变对象
- python 可变对象与不可变对象
- python可变对象和不可变对象
- python可变对象与不可变对象
- Python-可变对象和不可变对象
- python中 可变与不可变对象
- python的可变和不可变对象
- Python 中可变与不可变对象
- Python基础:Python可变对象和不可变对象
- Python基础:Python可变对象和不可变对象
- python下的可变对象与不可变对象
- Python中可变对象和不可变对象
- python知识点:可变对象和不可变对象
- python笔记-可变对象与不可变对象
- python 之可变对象与不可变对象
- Python中的可变对象与不可变对象
- Python可变对象v.s.不可变对象,引用
- jsp中9大内置对象以及4个作用域
- 数组的排序
- 实模式和保护模式下的地址计算方式
- Android学习知识点(1)---电话拨号器的实现
- shell -- 循环语法
- 可变对象 vs 不可变对象(Python)
- Redis小记
- 笔记本装SSD,win10
- 进程上下文和中断上下文的区别
- 第五期 Jlink调试路由器 《路由器就是开发板》
- CF 294E - Shaass the Great 树形dp
- 图示逻辑地址转换到物理地址
- 【Codeforces Round #368 (Div. 2)】Codeforces 707A Bakery
- 【思想随笔】你的人生由你自己决定