Python中的is和==的区别
我对Python还很陌生。我听到有人说用is
,而不是==
,因为“这不是C语言”。但是我写的代码x is 5
没有按预期工作。
那么,按照正确的Python/PEP风格,什么时候该用is
,什么时候该用==
呢?
2 个回答
2
这两个运算符的意思是不同的。
is
用来检查对象的身份。也就是说,它用来判断两个操作数是否指向同一个对象。==
用来检查值是否相等。也就是说,它用来判断两个操作数的值是否相同。
当你比较 x
和 5
时,你通常关心的是它们的值,而不是存储这个值的对象。
11
你应该用 ==
来比较两个值是否相等。用 is
来检查两个名字是否指向同一个对象。
你几乎不应该使用 x is 5
,因为在某些情况下,小整数可能会被缓存。这可能会导致一些意想不到的结果:
>>> x = 256
>>> x is 256
True
>>> x = 257
>>> x is 257
False