Python填坑记——对象引用
2013-11-26 17:18
309 查看
首先,我们来了解一下python的基础概念:
1. Python在heap中分配的对象分成两类:可变对象和不可变对象。所谓可变对象是指,对象的内容是可变的,例如list。而不可变的对象则相反,表示其内容不可变。
不可变对象:int,string,float,tuple
可变对象 :list,dictionary
2. Python函数的参数传递采用的是“传对象引用”的方式。
下面我们用例子来理解一下以上概念:
注意下面这个例子跟上面例子的区别。
1. Python在heap中分配的对象分成两类:可变对象和不可变对象。所谓可变对象是指,对象的内容是可变的,例如list。而不可变的对象则相反,表示其内容不可变。
不可变对象:int,string,float,tuple
可变对象 :list,dictionary
2. Python函数的参数传递采用的是“传对象引用”的方式。
下面我们用例子来理解一下以上概念:
x=1 y=x #y跟x指向同一个对象引用 x=2 #由于x是不可变对象,这时候旧的对象被系统回收,x指向新的对象引用 print x,y #结果是2,1
a = ['1'] #a指向了一个list可变对象引用 b = a #b跟a指向同一个对象引用 a[0] = 2 #改变a对象引用的值,那么跟a指向同一个对象引用的b的值也随之同步改变。 print a,b #结果是2,2
def func(a): a[0]=1 #改变a对象引用的值,那么跟a指向同一个对象引用的b的值也随之同步改变。 b=['2'] func(b) #上面提到,函数的参数传递就是传对象引用,所以这里就相当于b=a,即b跟a指向同一个对象引用 print b #结果[1]
注意下面这个例子跟上面例子的区别。
def func(a): a=['1'] #这里并没有修改a指向的对象引用的值,而是a指向了新的对象引用,所以最后b的值没有改变。 b=['2'] func(b) print b #结果[2]
相关文章推荐
- python 引用和对象理解
- Python-变量对象引用
- Python中对象的引用和共享引用
- python学习(对象引用)
- python赋值和拷贝----一切皆对象,参数皆引用
- python 引用和对象理解
- python:setattr的迷惑以及函数作为对象添加引用
- python函数参数是值传递还是引用传递(以及变量间复制后是否保持一致):取决于对象内容可变不可变
- python的全局变量(属性的用法),私有属性,计算对象引用数
- Python中的变量引用对象需注意的几点
- Python:创建对象中的引用和拷贝
- Python----__str__ 输出对象变量,默认会输出引用的对象。
- python函数参数是值传递还是引用传递(以及变量间复制后是否保持一致):取决于对象内容可变不可变
- python的全局变量(属性的用法),私有属性,计算对象引用数
- python对象引用(变量)
- 流畅的python第八章对象引用,可变性和垃圾回收
- python对象引用_一切都是对象
- Python中对象的理解:引用和赋值
- python笔记(五) - 获取对象的引用
- python函数参数是值传递还是引用传递:取决于对象内容可变不可变