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

此变量非彼变量(python变量)

时间:2016-04-06 00:43:47      阅读:225      评论:0      收藏:0      [点我收藏+]

标签:python   变量   

曾经很是好奇,python的变量怎么这么灵活,既不用声明其类型又可以各种随便赋值,后来深入学习就感觉着实有趣。Python中数字字符串等等都是对象,1是对象,“Hello”也是对象,每个对象都知道自己的类型,每个对象都有一个引用计数器,这个引用计数器是干嘛的呢,加入把对象“hello”赋值给变量a,即:a=”hello” 这样a就是对象“hello”的一个引用,再把a赋值给b,即b=a,那么 ab就指向同一个对象“hello”

技术分享


此时hello的引用计数器的值就是2了,python有垃圾回收机制,当引用计数器为0时,对象所占用的内存就会自动释放。当然并不是所有对象都是这样,python有个缓存机制,python会缓存并复用小的整数和小的字符串,例如

>>>a=24

>>>a=”Hello world”

当我们给a从新赋值后,对象24并不会像我们所说的那样被回收,它将可能仍被保存在一个系统表中等待下一次引用,再举一个例子:

>>>a=45

>>>b=45

>>>a is b

True

此时a,b指向的是同一个对象.

>>>a=[‘a’,’b’]

>>>b=[‘a’,’b’]

>>>a is b

false

此时,ab指向的是不同对象

我们可以使用”is操作符来进行验证,is操作符是用来检查对象的同一性,如果两个变量名精确的指向同一个对象,就返回True    a is b

我们也可以向python查询引用次数

>>>import sys

>>>sys.getrefcount(1)

828

输出828次引用,绝大多数是idle系统代码所使用。


此变量非彼变量(python变量)

标签:python   变量   

原文地址:http://xiaofengfeng.blog.51cto.com/8193303/1760675

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