python中的引用与拷贝
2017-04-17 15:35
323 查看
python作为一种脚本语言,也有与C++相同的特性:变量的引用与拷贝。下面我们来简单学习一下。
1. 引用
首先需要说明的是python中每一个变量都是一个对象,我们可以使用id()查看每个对象的id。例如:
2. 拷贝
那么我们如何在python中实现拷贝呢?其实也简单,就是利用切片对象。例如:
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]
>>>好了,今天的知识点就写到这里。如果有遗漏的知识点,以后还会更新的。
相关文章推荐
- python 引用,拷贝,对象回收,弱引用
- Python 初体验之 对象的引用和拷贝
- Python中的引用和拷贝浅析
- python语法31[引用和拷贝]
- 解析Python中的变量、引用、拷贝和作用域的问题
- python语法31[引用和拷贝]
- python 引用,浅copy和深拷贝
- 初学 Python — 拷贝与引用
- python赋值和拷贝----一切皆对象,参数皆引用
- python 中的赋值、引用、拷贝、作用域
- python语法31[引用和拷贝]
- python中的对象拷贝示例 python引用传递
- python 对象拷贝——浅拷贝和深拷贝 之函数传递——值传递还是引用传递?
- Python中的引用和拷贝浅析
- 深入理解 python 中的赋值、引用、拷贝、作用域
- python 引用和拷贝
- python 引用 浅拷贝 深拷贝
- 学习 python 连接字符串,替换,截取,引用,拷贝,is,def返回值,异常
- python 赋值的时候是引用,如果需要复制则需要注意深拷贝和浅拷贝的区别
- python基础(5):深入理解 python 中的赋值、引用、拷贝、作用域