发布于 2026-01-06 17 阅读
0

Python 的 'is' 与 '==' 的区别

Python 的 'is' 与 '==' 的区别

很多时候,当我if在 Python 中执行 s 操作时,我都会思考应该使用is还是==进行检查。

# do I do
if a is b:
    ...

# or
if a == b:
    ...
Enter fullscreen mode Exit fullscreen mode

如果你是 Python 新手,这可能会有点令人困惑,很容易误以为这两个函数可以互换使用。那么,它们之间到底有什么区别呢?

is

is运算符检查两个元素是否指向同一个对象。让我们打开一个 Python 控制台来帮助说明这一点:

$ python3
Python 3.7.4
[Clang 10.0.1 (clang-1001.0.46.4)] on darwin
Type "help", "copyright", "credits" or "license" for more information.

>>> a = []
>>> b = []
>>> c = a

>>> a
[]
>>> b
[]
>>> c
[]
>>>
Enter fullscreen mode Exit fullscreen mode

我们声明了三个变量并给它们赋值。`a`、`b`和 `c` 都是空列表,ab`d` 和 `e` 都是空列表c = a。我们可以看到,这三个变量都包含一个空列表。使用 `t`is函数来比较它们:

>>> a is b
False
>>> b is c
False
>>> a is c
True
Enter fullscreen mode Exit fullscreen mode

尽管 `a`a和 `b`b看起来相同(因为它们都是空列表),但变量 `a`ab`b` 并不指向同一个对象,因此a is b`a` 的值为 `b`。`b`False的情况也是如此b is c

相反,因为我们将变量赋值ac,所以它们都指向同一个对象,因此a is cTrue

==

==另一方面,它会检查两个元素是否包含相等的值。它们是否指向同一个对象在这里并不重要。

>>> a == b
True
>>> b == c
True
>>> a == c
True
Enter fullscreen mode Exit fullscreen mode

所有使用 `is` 的检查结果==都为 `true` ,因为 ` a`、` b` 和`c`True的值都相等。如果引入 `is`,则`a`、 `b``c` 的值都将为 `false` ,因为它们的值不相等。abcd = [1, 2, 3]a == db == dc == dFalse

因此,如果您想检查元素是否指向同一个对象,请使用 ` is.`。如果您只关心值的相等性,请使用 ` ==.`。

文章来源:https://dev.to/wangonya/python-is-vs-28eb