对于一些特殊的数据,虽然赋值给多个变量,但在实际内存存储时将只存储一个地址,并以一种计数器的模式记录有几个变量使用这个数据,当变量发生变化时,计数器做相应调整。
也许是版本差异,在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数据,赋值给不同变量后会采用不同地址