(一)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

 

posted on 2019-05-11 23:24  JACK#zhang  阅读(223)  评论(0编辑  收藏  举报