Python入门基础篇 No.10 —— 同一运算符_整数缓存问题
前生篇:布尔值_比较运算符_逻辑运算符
后世篇:字符串_unicode字符集_三种创建字符串方式_len()
小白不看都能懂:Python之真功夫系列(全章)
前言
一、同一运算符
同一运算符用于比较两个对象的存储单元,实际比较的是对象的地址。
- is 是判断两个标识符是不是引用同一个对象
- is not 是判断两个标识符是不是引用不同对象
- is 与 == 区别:
is 用于判断两个变量引用对象是否为同一个,既比较对象的地址。
== 用于判断引用变量引用对象的值是否相等,默认调用对象的 eq()方法。
二、整数缓存问题
Python 仅仅对比较小的整数对象进行缓存(范围为[-5, 256]),而并非是所有整数对象。需要注意的是,这仅仅是在命令行中
执行,而在 Pycharm 或者保存为文件执行,结果是不一样的,这是因为解释器做了一部分优化(范围是[-5,任意正整数])。
- is 比较两个对象的 id 值是否相等,是否指向同一个内存地址;
- == 比较的是两个对象的内容是否相等,值是否相等;
- 小整数对象[-5,256]在全局解释器范围内被放入缓存供重复使用;
- is 运算符比 == 效率高,在变量和 None 进行比较时,应该使用 is。
>>> x = 9999
>>> y = 9999
>>> x == y
True
>>> x is y
False
>>> id(x)
2556022936112
>>> id(y)
2556022936048
>>> a = 9
>>> b = 9
>>> a == b
True
>>> a is b
True
>>> id(a)
140736075798432
>>> id(b)
140736075798432
>>>
总结
以上帮各位总结好了,收藏,关注即可查收。
前生篇:布尔值_比较运算符_逻辑运算符
后世篇:字符串_unicode字符集_三种创建字符串方式_len()
小白不看都能懂:Python之真功夫系列(全章)
关注下方公众号,免费拿Python学习资料!!!