元组与python中的列表对象

jac*_*hym 5 python

有人可以解释一下吗?

>>> [] is []
False
>>> () is ()
True
>>> (1,) is (1,)
False
Run Code Online (Sandbox Code Playgroud)

我明白我应该使用"=="代替"是"来比较这些值,我只是想知道为什么会这样?

Mat*_*hen 10

is基于对象身份.IE,左右是同一个对象吗?

在所有这些情况下,对象通常会有所不同(因为你有六个单独的文字).但是,由于依赖于实现的实习,空元组是同一个对象.如您所述,您绝不应该依赖此行为.

请注意,可变对象无法实现,这意味着第一个必须为false.

  • 注意,"interning"可以(通常)适用于字符串,以及任何其他不可变的文字/值.因为它们是不可变的,所以Python的任何实现都可以选择使不同的引用收敛(指向)对象的任何单个实例.这就是在这种情况下实习意味着什么.Interning是一个实现细节,可以针对常见用例进行优化.顺便说一句,Python列表是可变的,因此不能进行实习. (2认同)