Python入门-2编程基本概念:12同一运算符-整数缓存问题

Posted jack-zh

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python入门-2编程基本概念:12同一运算符-整数缓存问题相关的知识,希望对你有一定的参考价值。

一:同一运算符

  同一运算符用于比较两个对象的存储单元,实际比较的是对象的地址。

运算符 描述
is  is是判断两个标识符是不是引用同一个对象
is not  is not 是判断两个标识符是不是引用不同对象

  is 与 == 区别:
    is 用于判断两个变量引用对象是否为同一个,既比较对象的地址。
    == 用于判断两个变量引用对象的值是否相等,默认调用对象的 __eq__()方法。

二:整数缓存问题

  Python仅仅对比较小的整数对象进行缓存(范围为[-5, 256])缓存起来,而并非是所有整数对象。需要注意的是,这仅仅是在命令行中执行时,而在Pycharm或者保存为文件执行,结果是不一样的,这是因为解释器做了一部分优化(范围是[-5,任意正整数])。

总结:

  1、is 比较两个对象的 id 值是否相等,是否指向同一个内存地址;

  2、== 比较的是两个对象的内容是否相等,值是否相等;

  3、小整数对象[-5,256]在全局解释器范围内被放入缓存供重复使用;

  4、is 运算符比 == 效率高,在变量和None进行比较时,应该使用 is。

  【操作】同一运算符测试

 1 >>> a=1000
 2 >>> b=1000
 3 >>> a == b
 4 True
 5 >>> a is b
 6 False
 7 >>> id(a)
 8 1799963429808
 9 >>> id(b)
10 1799964263632
11 >>> c = 10
12 >>> d = 10
13 >>> c is d
14 True
15 >>> id(c)
16 140735929836656
17 >>> id(d)
18 140735929836656

 

以上是关于Python入门-2编程基本概念:12同一运算符-整数缓存问题的主要内容,如果未能解决你的问题,请参考以下文章

Python入门-2编程基本概念:18字符串-驻留机制-内存分析-字符串同一判断-值相等判断

Python入门-2编程基本概念:09浮点数-自动转换-强制转换-增强赋值运算符

Python入门-2编程基本概念:11布尔值-比较运算符-逻辑运算符及短路问题

Python入门-2编程基本概念:08整数-不同进制-其他类型转换成整数

Python入门-2编程基本概念:01程序的构成

Python入门-2编程基本概念:10时间表示-unix时间点-毫秒和微妙-time模块