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

python中的引用与拷贝

2017-04-17 15:35 323 查看
        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]
>>>
        好了,今天的知识点就写到这里。如果有遗漏的知识点,以后还会更新的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: