Python基础:Python可变对象和不可变对象
2014-04-28 15:15
295 查看
Python在heap中分配的对象分成两类:可变对象和不可变对象。所谓可变对象是指,对象的内容是可变的,例如list。而不可变的对象则相反,表示其内容不可变。
不可变对象:int,string,float,tuple
可变对象 :list,dictionary
一、不可变对象
由于Python中的变量存放的是对象引用,所以对于不可变对象而言,尽管对象本身不可变,但变量的对象引用是可变的。运用这样的机制,有时候会让人产生糊涂,似乎可变对象变化了。如下面的代码:
Java代码
![](http://thomaschen2011.iteye.com/images/icon_star.png)
i = 73
i += 2
![](http://dl.iteye.com/upload/attachment/0064/2625/ecaa0811-5af3-3893-a26a-951bbf22a571.png)
从上面得知,不可变的对象的特征没有变,依然是不可变对象,变的只是创建了新对象,改变了变量的对象引用。
看看下面的代码,更能体现这点的。
Java代码
![](http://thomaschen2011.iteye.com/images/icon_star.png)
#因为258是int对象,是不可变对象的。所以下面3个id的值都是一样的,最后一句的结果也是为True
#有点奇怪的是为什么在IDLE,和在脚本执行的结果不太一样。所以下面的代码请在脚本中执行。
print(id(258))
a = 258
print(id(a))
b = 258
print(id(b))
print(a is b)
二、对于可变对象
其对象的内容是可以变化的。当对象的内容发生变化时,变量的对象引用是不会变化的。如下面的例子。
Python代码
![](http://thomaschen2011.iteye.com/images/icon_star.png)
m=[5,9]
m+=[6]
![](http://dl.iteye.com/upload/attachment/0064/2627/562fc52b-a7cb-36e2-936e-a03e7a62268e.png)
![](http://dl.iteye.com/upload/attachment/0064/2623/28e6a01b-2235-395c-bfb2-260a7199adae.png)
查看图片附件
不可变对象:int,string,float,tuple
可变对象 :list,dictionary
一、不可变对象
由于Python中的变量存放的是对象引用,所以对于不可变对象而言,尽管对象本身不可变,但变量的对象引用是可变的。运用这样的机制,有时候会让人产生糊涂,似乎可变对象变化了。如下面的代码:
Java代码
![](http://thomaschen2011.iteye.com/images/icon_star.png)
i = 73
i += 2
![](http://dl.iteye.com/upload/attachment/0064/2625/ecaa0811-5af3-3893-a26a-951bbf22a571.png)
从上面得知,不可变的对象的特征没有变,依然是不可变对象,变的只是创建了新对象,改变了变量的对象引用。
看看下面的代码,更能体现这点的。
Java代码
![](http://thomaschen2011.iteye.com/images/icon_star.png)
#因为258是int对象,是不可变对象的。所以下面3个id的值都是一样的,最后一句的结果也是为True
#有点奇怪的是为什么在IDLE,和在脚本执行的结果不太一样。所以下面的代码请在脚本中执行。
print(id(258))
a = 258
print(id(a))
b = 258
print(id(b))
print(a is b)
二、对于可变对象
其对象的内容是可以变化的。当对象的内容发生变化时,变量的对象引用是不会变化的。如下面的例子。
Python代码
![](http://thomaschen2011.iteye.com/images/icon_star.png)
m=[5,9]
m+=[6]
![](http://dl.iteye.com/upload/attachment/0064/2627/562fc52b-a7cb-36e2-936e-a03e7a62268e.png)
![](http://dl.iteye.com/upload/attachment/0064/2623/28e6a01b-2235-395c-bfb2-260a7199adae.png)
查看图片附件
相关文章推荐
- Python基础(3)_可变对象与不可变对象、列表、元祖和字典
- Python基础(list和tuple)可变集合和‘不可变’集合
- Python中的可变,不可变对象;值类型,引用类型;浅拷贝,深拷贝理解
- Python中可变对象和不可变对象
- 浅谈Python中的可变对象和不可变对象
- 关于Python参数传递时,传递可变对象(mutable)和不可变更对象(immutable)的误区
- python参数传递问题与可变/不可变对象
- python知识点:可变对象和不可变对象
- Python 中的可变对象和不可变对象
- python学习之路——函数关于可变对象和不可变对象问题
- python变量赋值(可变与不可变) 分类: python基础学习 python Module 2013-10-30 11:59 1036人阅读 评论(0) 收藏
- Python基础:Python可变对象和不可变对象
- Python可变对象v.s.不可变对象,引用
- python知识整理--议可变对象和不可变对象以及str、list、tuple、dict、set
- Python中的可变对象和不可变对象传递
- Python中的可变对象和不可变对象
- python的可变对象和不可变对象
- Python中的可变对象和不可变对象
- python可变对象和不可变对象
- python的可变和不可变对象