您的位置:首页 > 编程语言 > Python开发

Python填坑记——对象引用

2013-11-26 17:18 309 查看
首先,我们来了解一下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]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: