Python 值实际上并不相等

标签 python

<分区>

Possible Duplicate:
Python “is” operator behaves unexpectedly with integers

我正在学习 Python,并且很好奇为什么:

x = 500
x is 500

返回 False,但是:

y = 100
y is 100

返回真值?

最佳答案

Python 重用小整数。也就是说,所有 1(例如)都是相同的 1 对象。如果我没记错的话,范围是 -5 到 255,尽管这是不应依赖的 CPython 实现细节。例如,我很确定 Jython 和 IronPython 会以不同方式处理此问题。

之所以可以正常工作,是因为 int 是不可变的。也就是说,您不能将 4 就地更改为 5。如果 a 的值为 4,a = 5 实际上是将 a 指向不同的对象,而不是改变值 a 包含。 Python 不共享任何可变类型(例如列表),在这些类型中意外地多次引用同一对象可能会导致问题。

你应该使用 == 来比较大多数东西。 is 用于检查两个引用是否指向同一个对象;它大致等同于 id(x) == id(y)

关于Python 值实际上并不相等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12557514/

相关文章:

python - Python xlrd (Python Excel) 和 Amazon S3 的 IOError

python - 识别seaborn或matplotlib使用的默认调色板的名称

python - Django Celery 日志记录最佳实践

python - python3.6 上的 tkinter 在 arch 上有多个版本

python - Linux nm 的 Windows 模拟来查看 PYD 文件的内容?

python - 在 django 中编辑 slug 帖子

python - 在python中将字符串写入文件

javascript - Youtube 数据 API 和谷歌云端点

python - Pandas 计算行的增长百分比

python - Pandas 过滤器未按预期工作