首页 > 解决方案 > 在 small_ints 之外的 Python3 “is” 运算符

问题描述

我正在使用 Python 3.7.4 并且理解小整数是数字 [-5,256]。

我想知道为什么下面代码中#2 的结果返回True。不应该False吗?

#1
b=257
c=257
b=b+1
c=c+1
print(id(b))
print(id(c))
print(b is c)

#2
b1=257
c1=257
print(id(b1))
print(id(c1))
print(b1 is c1)

Result in Visual Code Terminal
4306256464
4306256432
False
4306256240
4306256240
True

这是我在 Mac Terminal 中的代码,我认为这是理想的结果

Python 3.7.4 (v3.7.4:e09359112e, Jul  8 2019, 14:54:52) 
Type "help", "copyright", "credits" or "license" for more information.
>>> b=257
>>> c=257
>>> print(id(b))
4351554224
>>> print(id(c))
4351554096
>>> print(b is c)
False

参考:[1] “is”运算符对整数的行为异常

标签: pythonpython-3.7

解决方案


Python 实例化并实习了从 -5 到 256 的数字范围,所有这些都将是单例对象。Python 为 -5 到 256 之间具有相同值的所有变量创建一个对象

阅读单例和 Python 中的实习


推荐阅读