python中的引用与拷贝

        python作为一种脚本语言,也有与C++相同的特性:变量的引用与拷贝。下面我们来简单学习一下。

1. 引用

        首先需要说明的是python中每一个变量都是一个对象,我们可以使用id()查看每个对象的id。例如:

>>> a=[1,2,3]
>>> b=a
>>> print b
[1, 2, 3]
>>> a+=[4]
>>> print a
[1, 2, 3, 4]
>>> print b
[1, 2, 3, 4]
>>> id(a)
65398584
>>> id(b)
65398584

        上面这个例子中,我们首先令b=a。当我们对a指向的对象进行修改后,我们在查看b的结果,发现b的结果也被修改了。我们再利用id()函数查看他们的id号,发现他们其实指向同一个对象。这就是python中的引用。不过python中对整数对象字符串对象进行了特殊处理。让我们看个例子:

>>> a=1
>>> id(a)
3443120
>>> b=1
>>> id(b)
3443120
>>> c=2.0
>>> id(c)
31849288
>>> d=2.0
>>> id(d)
31849256
>>> e='123'
>>> id(e)
66230048
>>> f='123'
>>> id(f)
66230048

各位有没有发现,a和b、e和f指向同一个对象,而c和d指向不同的对象。为什么这样?整数对象和字符串对象是不可变对象,所以 Python 会很高效的缓存它们。这会造成我们认为 Python 应该创建新对象时,它却没有创建新对象的假象。如我们再看个例子:

>>> g=123456789
>>> h=123456789
>>> id(g)
41668476
>>> id(h)
41668512

        看到这个例子,我相信一定会有人有疑问的,g和h也是整数,值也相同,为什么这一次指向的不是同一个对象呢?因为Python 仅缓存简单整数,它认为在 Python 应用程序中这些小整数会经常被用到。

2. 拷贝

        那么我们如何在python中实现拷贝呢?其实也简单,就是利用切片对象。例如:

>>> a=[1,2,3] 
>>> print id(a) 
58386392 
>>> b=a 
>>> print b 
[1, 2, 3] 
>>> print id(b) 
58386392 
>>> c=a[:] 
>>> print id(c) 
58373944 
>>> print c 
[1, 2, 3] 
>>> 

        好了,今天的知识点就写到这里。如果有遗漏的知识点,以后还会更新的。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值