Python的内存使用尝试

    xiaoxiao2022-07-12  145

    对于一些特殊的数据,虽然赋值给多个变量,但在实际内存存储时将只存储一个地址,并以一种计数器的模式记录有几个变量使用这个数据,当变量发生变化时,计数器做相应调整。

    也许是版本差异,在python3.7 版本中,其存储的数据由其不同特点:

    例1 、 数据为全数字字符串

    >>> x='01234567890' >>> y='01234567890' >>> x is y True

    为了检验两个引用指向同一个对象,我们可以用is关键字。is用于判断两个引用所指的对象是否相同,是否指向同一个内存地址

    例2、数据为全部大写字符

    >>> x="ABCDEFGHIJKLMNOPQRSTUVWXYZ" >>> y="ABCDEFGHIJKLMNOPQRSTUVWXYZ" >>> x is y True

    例3、数据为全部小写字符

    >>> x='abcedefgijklmnopqrstuvwxyz' >>> y='abcedefgijklmnopqrstuvwxyz' >>> x is y True

    例4、数据为全部多字符(26*11)

    >>> x='ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ' >>> y='ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ' >>> x is y True

    例5、数据为整数

    >>> x=-5 >>> y=-5 >>> x is y True >>> x=-6 >>> y=-6 >>> x is y False >>> x=0 >>> y=0 >>> x is y True >>> x=256 >>> y=256 >>> x is y True >>> x=300 >>> y=300 >>> x is y False >>> x=257 >>> y=257 >>> x is y False

    例6、 数据为浮点数

    >>> x=1.0 >>> y=1.0 >>> x is y False

    例7、数据为tuple

    >>> x=(1,3,5) >>> y=(1,3,5) >>> x is y False

    例8、数据为byte类型

    >>> x=b'123' >>> y=b'123' >>> x is y False >>> x=b'a' >>> y=b'a' >>> x is y False

    例8、数据含有其他字符的字符串

    >>> x='v e' >>> y='v e' >>> x is y False >>> x='1:' >>> y='1:' >>> x is y False

    比较结果表明:

    对于字母、数字组成的字符串,赋值给不同变量后会采用同一地址,其长度可以超过3000字符(最大测试字符串为26*12*10);

    对于整数数值,当取值为-5~256 时,赋值给不同变量后会采用同一地址

    对于浮点型、字符型、tuple数据,赋值给不同变量后会采用不同地址

     

    最新回复(0)