首页 » InfoTech »

Python的id()函数和对象创建细节

2018年4月14日 / 90次阅读
Python

打开支付宝首页,搜索“529018372”,即可领取红包!可重复领。

特色图片

Python是动态类型语言,变量使用无需申明类型,而且可以在程序运行过程中动态改变。

Python的变量其实类似于C语言中的指针,变量只是一个指向,指向一个对象,此对象存储在内存中。通过内置的id()函数,可以得到这个对象的内存地址。

上一段Python代码:

>>>
>>> a=2.0
>>> b=2.0
>>> a is b
False
>>> a == b
True
>>>
>>>
>>> aa=444
>>> bb=aa
>>> bb is aa
True
>>> bb == aa
True
>>>
>>> id(a)
5153104
>>> id(b)
5152984
>>>
>>> id(aa)
7441648
>>> id(bb)
7441648
>>>
>>> c=2
>>> d=2
>>> c is d
True
>>> id(c)
500892144
>>> id(d)
500892144
>>>

对于Float对象,虽然a和b的值相同,但是Python却创建了两个不同的对象,因为id不同。id不同,通过is来判断就不相同。如果是直接将一个指向赋给另一个指向,比如bb=aa这一句,is的返回就是相同的,id也是相同的。

但是为了提高内存利用效率对于一些简单的对象,如一些数值较小的int对象,python采取重用对象内存的办法,如指向c=2,d=2时,由于2作为简单的int类型且数值小,python不会两次为其分配内存,而是只分配一次,然后将c与d同时指向已分配的对象。但是对于int对象,还是分配不同的内存实例,读者可自己测试。

不过,我们在写Python程序时,可以不考虑这些细节,有自动的内存垃圾回收机制(指向为0,或不在有效程序运行范围内的对象实例),我们只需要意识到Python的动态类型即可。

本文链接:http://www.maixj.net/ict/python-id-17664
云上小悟 麦新杰(QQ:1093023102)

相关文章

评论是美德

无力满足评论实名制,评论对非实名注册用户关闭,有事QQ:1093023102.


前一篇:
后一篇:

栏目精选

云上小悟,麦新杰的独立博客

Ctrl+D 收藏本页

栏目

AD

ppdai

©Copyright 麦新杰 Since 2014 云上小悟独立博客版权所有 备案号:苏ICP备14045477号-1。云上小悟网站部分内容来源于网络,转载目的是为了整合信息,收藏学习,服务大家,有些转载内容也难以判断是否有侵权问题,如果侵犯了您的权益,请及时联系站长,我会立即删除。

网站二维码
go to top