双等于vs是在Python中

我在Python解释器中运行以下代码:

>>> foo = 10 >>> dir(foo) == dir(10) True >>> dir(foo) is dir(10) False >>> 

为什么是这样?

is检查2个参数引用同一个对象, ==检查2个参数是否具有相同的值。 dir()返回一个包含foo10的相同数据的list ,但是这两个事物的实际list实例是不同的。