首先简单来说:“==”运算符是比较两个对象的值(对象中保存的数据),而“is”比较对象的标识。
通常我们关注的是二者的值,而不是标识,所以在python中“==”出现的频率要比“is”高,然而在单值比较中,应该使用is进行比较。最常使用“is”来检查变量绑定的值是不是None,
x is None
x is not None
is 的运算速度比 == 快,因为它不能重载,直接对两个值的ID进行比较,而 a == b是语法糖,
1.若数字[-5,256]中,定义两个数字在此区间中,python将这些数字缓存在内存中,因为在脚本执行中这些数字会被频繁的使用,所以我们在调用此区间的数字时,实为调用的同一个对象
2.若赋值语句在同一个最小代码块中,在此代码块中进行赋值,则它们指向的内存地址也是相同的,所以id是相同的,