码迷,mamicode.com
首页 > 编程语言 > 详细

Python中对象的引用和共享引用

时间:2017-10-09 11:00:44      阅读:306      评论:0      收藏:0      [点我收藏+]

标签:是否一致   bsp   释放   对象   不同   赋值   比较   技术分享   垃圾   

在Python中先创建一个对象,然后再将变量指向所创建的对象。

对于每个对象,都有一个头部信息,在信息中就标记了这个对象的类型信息。每当一个变量名被赋予了一个新的对象,之前那个对象占用的空间就回被回收(如果此时这个对象没有被别的变量名或者对象所引用的话)。另外,在python中,每个对象都保有一个计数器,计数器中记录了这个对象被引用的次数,当这个计数器被置为0时,对象所占用的内存空间就会被释放,即当做垃圾回收。

共享引用:

在python中,变量总是一个指向对象的指针,而不是可以改变的内存区域标签。给一个变量赋予一个新的值,不是替换了原始的对象,而是让这个变量去引用一个新的对象,实际效果就是对变量重新赋值,这仅仅会影响到那个被重新赋值的变量。

另外,在这里说一下 “ == ”和“ is ”这个操作符

==,和C语言中的作用是一样的,测试两个被引用的对象的值是否一致;

is,检查两个对象的同一性,判断两个对象名是否指向同一地址空间,如果是则返回True。如图,

技术分享

 

创建两个列表对象,即使它们的值相同,也是来源于不同的空间。因此is的比较结果为假

技术分享

也许有的朋友测试了一个如上图的例子,结果 is 竟然返回True。这不是代表它们是指向同一个对象,而是在内存中,小的整数和字符串被缓存复用了,所以is才告诉我们a和b是引用了相同的对象。

Python中对象的引用和共享引用

标签:是否一致   bsp   释放   对象   不同   赋值   比较   技术分享   垃圾   

原文地址:http://www.cnblogs.com/ganchuanpu/p/7639788.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!