“is”在Python中如何工作?

9 投票
5 回答
2180 浏览
提问于 2025-04-16 18:56

请问有人能解释一下如何在'if'条件中使用'is'吗?我正在使用分数模块,但遇到了一些问题:

>>> Fraction(0, 1) is 0
False
>>> float(Fraction(0, 1))
0.0
>>> float(Fraction(0,1)) is 0.0
False

我找到的唯一有效的方法是:

>>> F = Fraction(a,b)
>>> if F >= 0:
...     if F(0, 1) <= 0:
...                      ...

这里有没有办法使用'is'呢?谢谢。

5 个回答

6

来自文档

运算符 isis not 用来检查对象的身份:x is y 只有在 x 和 y 是同一个对象时才为真。x is not y 则是相反的结果。

你在这里想要使用的是 ==,它用来检查两个对象是否相等,或者说它们的值是否相同,而不是检查它们是否是同一个对象。

这里有一个简单的例子(在CPython中,其他实现可能会有所不同):

>>> 1 + 2 == 3.0
True
>>> 1 + 2 is 3.0
False
>>> 1 + 2 is 3
True
>>> id(1 + 2)
4298185512
>>> id(3.0)
4298194656
>>> id(3)
4298185512
6

在Python中,is运算符用来检查两个变量是否指向同一个对象,也就是说,它们是否是同一个东西。这个运算符不适合用来检查数字是否相等。如果你想比较数字是否相等,应该使用==

举个例子,考虑以下代码:

(1000 + 1000) is (1000 + 1000)

这段代码的结果是False

5

is 用来检查对象的身份。它会返回真(true),如果两个名字指向的是同一个对象。一个常见的用法是检查一个名字是否指向 None

if foo is None:
    # do stuff

撰写回答