“is”在Python中如何工作?
请问有人能解释一下如何在'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
来自文档:
运算符
is
和is 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