python - 在 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”运算符对整数的行为异常
解决方案
Python 实例化并实习了从 -5 到 256 的数字范围,所有这些都将是单例对象。Python 为 -5 到 256 之间具有相同值的所有变量创建一个对象
推荐阅读
- babeljs - 是否可以进行不包括某些节点类型的 Babel“范围重命名”?
- python - 如何在python中使用硒编辑浏览器元素的html代码
- entity-framework - 如何在 -ignorechanges 迁移后使用新迁移更新我的数据库
- python - 使用 sum 时如何避免出现不支持的类型错误
- karma-runner - 在 Karma 测试环境中使用 Sinon 执行 afterCreate 之前涉及 getRoot 的 Stub MST getter
- python - Django Admin(如果值> x,则显示数据库条目)
- regex - Powershell 正则表达式内容和回写
- java - Android Studio 如何让其他用户查看某人的个人资料 Firebase 的可见性消失
- angular - StompJS Websocket 已连接但不返回任何消息
- java - 有谁知道为什么@Valid 因 javax.validation 失败而与 spring starter 验证一起使用