繁体   English   中英

“是”如何在 python 中工作?

[英]How does “is” work in python?

可以请有人解释如何在“如果”条件下使用“是”。 我正在使用分数模块,但遇到了一些麻烦:

>>> 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'? 谢谢。

文档中

运算符isis not测试 object 身份:当且仅当 x 和 y 相同 object 时, x is 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

python 中的is运算符用于检查两个变量是否指向同一个 object,并不用于检查数值相等性。 你应该使用==来代替。

例如考虑

(1000 + 1000) is (1000 + 1000)

返回False

is object 身份。 如果两个名称引用相同的 object,则返回 true。 一个典型的用例是检查名称是否引用None

if foo is None:
    # do stuff

a is b等价于id(a) == id(b)

引自http://docs.python.org/library/operator.html

operator.is_(a, b) 返回 a 是 b。 测试 object 身份。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM