zoukankan      html  css  js  c++  java
  • python 类型大小

    返回单位:字节

    sys.getsizeof()

    import sys
    >>> sys.getsizeof('3') 38 >>> sys.getsizeof('32') 39 >>> sys.getsizeof('325') 40 >>> sys.getsizeof(325) 24 >>> sys.getsizeof(1) 24 >>> sys.getsizeof(10000003250) 24 >>> sys.getsizeof(1000000000000000) 24 >>> sys.getsizeof(1000000000000000090) 24 >>> sys.getsizeof(10000000000000000900) 36

    可以看出字符串是比整形占用空间小的,且整形在一定范围内占用空间是一样的

    对比

    import timeit
    import sys
    def f():
        a, b, c = 3,2,1
        return sys.getsizeof(a * 100 + b * 10 + c)
    
    def g():
        a, b, c = 3,2,1
        return sys.getsizeof(str(a) + str(b) + str(c))
    
    def f2():
        a, b, c = 3,2,1
        return a * 100 + b * 10 + c
    
    def g2():
        a, b, c = 3,2,1
        return str(a) + str(b) + str(c)
    
    print min(timeit.repeat(f2))
    print min(timeit.repeat(g2))
    print f()
    print g()

    结果

    0.296730041504
    0.70504784584
    24
    40

    可以看出f()无论是从速度还是从内存占用都完胜g()

    字典

    >>> a
    {1: 'a', 2: 'b'}
    >>> sys.getsizeof(a)
    280
    >>> a[4] = "askjdfjllllllllllllll"
    >>> a[5] = "askjdfjllllllllllllll"
    >>> a
    {1: 'a', 2: 'b', 4: 'askjdfjllllllllllllll', 5: 'askjdfjllllllllllllll'}
    >>> sys.getsizeof(a)
    280
    >>> sys.getsizeof(a[1])
    38
    >>> for i in range(100):
    ...     a[i] = "fq08888888888" * 20
    ... 
    >>> len(a)
    100
    >>> sys.getsizeof(a)
    12568
  • 相关阅读:
    缺省参数的注意事项
    可变和不可变类型
    Python之旅
    BBS项目 个人界面分类,文章,模板的使用详解
    Django 模板
    BBS项目 部分主界面and个人博客界面代码详解
    BBS项目 注册界面and部分首页代码详解
    BBS项目 备忘时时更新
    BBS项目 登录界面代码详解
    BBS项目 基本表关系
  • 原文地址:https://www.cnblogs.com/kaituorensheng/p/6200467.html
Copyright © 2011-2022 走看看