同一运算符
运算符 | 描述 |
---|---|
is | 判断两个标识符是否引用同一对象 |
is not | 判断两个标识符是否引用不同对象 |
从描述上来看,is和is not的作用好像跟==,!=的功能相似,但是是有很大的区别的,is,is not用来判断两个变量引对象是不是同一个,所以他们比较的是地址,而 ==,!=是用来判断变量引用的值是否相等,默认情况调用的是对象的__eq__()方法
这张图中a,b的值都一样,但是两个变量的地址不同,所以得出的结果才会如上图。
整数缓存问题
Python仅仅对比较小的整数对象进行缓存(范围为[-5, 256])缓存起来,而并非是所有整数对象。即在这个范围内取同样的值他们的id是一样的。需要注意的是,这仅仅是在命令行中执行,。具体含义如图
而在Pycharm或者保存为文件执行,结果是不一样的,这是因为解释器做了一部分优化(范围是[-5,任意正整数])即: 它们的运行结果为: