同一运算符
同一运算符用于比较两个对象的存储单元,实际比较的是对象的地址。
is 是判断两个标识符是不是引用同一个对象
is not 是判断两个标识符是不是引用不同对象
is 与== 区别:
is 用于判断两个变量引用对象是否为同一个,既比较对象的地址(id)。
== 用于判断引用变量引用对象的值是否相等(value),默认调用对象的__eq__()方法。
a=1000 b=1000
a==b 结果 True
a is b 结果 False #地址不同
整数缓存问题
命令行中Python 仅仅对比较小的整数对象进行缓存(范围为[-5, 256])缓存起来,而并非是所有整数对象。a=10; b=10; a is b 结果是True
而在Pycharm 或者保存为文件执行,结果是不一样的,这是因为解释器做了一部分优化(范围是[-5,任意正整数])。
is 运算符比== 效率高(==调用了方法),在变量和None 进行比较时,应该使用is。