注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

随机过程

http://superware.blog.163.com

 
 
 

日志

 
 

分析Python内置数据类型大小  

2014-05-11 20:58:59|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

        Python内置的数据类型有:整型、浮点型、字符型。下面就来分析这三种类型所占内存大小。

>>> i=5

>>> i

5

>>> f=5.5

>>> f

5.5

>>> c=complex(5,5)

>>> c

(5+5j)

>>> s='0123456789'

>>> s

'0123456789'

>>>

>>> print '******************* Data type check ... *********************'

'********************* Data type check ... ************************'

>>>

>>> i.__sizeof__()

24

>>> f.__sizeof__()

24

>>> c.__sizeof__()

32

>>> s.__sizeof__()

47

>>> t='ab'

>>> t.__sizeof__()

39

        下面计算数据大小,因为复数占据大小是浮点数大小的两倍,所以可以这样计算:

sizeof(c)-x = 2(sizeof(f) - x)

可以得出

x = 16

数值类型的公共部分占据 16 个字节,对于 64 位的机器来说就是占据两个字,也就是两个指针的大小。而且对于浮点数,其占据的内存大小为:24 - 16 = 8,正好是一个字而复数占据的是两个字;整数占据的是一个字。

对与字符串 s,其占据的字节数为:

(39-y)/(47-y) = 2/10

所以

y = 37

也就是说,字符串是每个字符占用一个字节,每一个字符串额外占用37个字节作它用。

那么数值类型的16个字节和字符串类型的37个字节都干什么了呢?

字符串中的37个字节中的一个可能是字符窜的 '\0' 字符,另外的36的字节,也就是4个字的大小可能是其他用途。
  评论这张
 
阅读(98)| 评论(0)
推荐

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017