python的对象引用

首先,我们来了解一下python的基础概念:
1. Python在heap中分配的对象分成两类:可变对象和不可变对象。所谓可变对象是指,对象的内容是可变的,例如list。而不可变的对象则相反,表示其内容不可变。
不可变对象:int,string,float,tuple

可变对象   :list,dictionary

2. Python函数的参数传递采用的是“传对象引用”的方式。


下面我们用例子来理解一下以上概念:

[python]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. x=1  
  2. y=x    #y跟x指向同一个对象引用  
  3. x=2    #由于x是不可变对象,这时候旧的对象被系统回收,x指向新的对象引用  
  4. print x,y #结果是2,1  

[python]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. a = ['1'#a指向了一个list可变对象引用  
  2. b = a     #b跟a指向同一个对象引用  
  3. a[0] = 2 #改变a对象引用的值,那么跟a指向同一个对象引用的b的值也随之同步改变。  
  4. print a,b #结果是2,2  

[python]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. def func(a):  
  2.   a[0]=1 #改变a对象引用的值,那么跟a指向同一个对象引用的b的值也随之同步改变。  
  3.   
  4. b=['2']  
  5. func(b) #上面提到,函数的参数传递就是传对象引用,所以这里就相当于b=a,即b跟a指向同一个对象引用  
  6. print b  #结果[1]  

注意下面这个例子跟上面例子的区别。

[python]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. def func(a):  
  2.   a=['1'#这里并没有修改a指向的对象引用的值,而是a指向了新的对象引用,所以最后b的值没有改变。  
  3.   
  4. b=['2']  
  5. func(b)  
  6. print b  #结果[2]  


转载来源:http://blog.csdn.net/ace_fei/article/details/16967327

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值