当我在python命令提示符下闲逛时,我发现了一些我个人不知道的东西。
这是我试图解开的一个谜团:
num = int(5) / 2
num == float # False
我觉得奇怪的是它没有返回True
。所以我试着和其他运营商合作。
num == int # False
num == str # False
它们都返回False,但当我检查它是哪个type
时,它会给我这个。
type(num) # Float
当我将它与float
运算符进行比较时,它不应该返回True
吗?
有人知道为什么会这样吗?
您的num
包含值2.5
,它不包含类型float
,因此num == float
不可能是真正的
可能是真的
-
与
2.5
值的比较print(num == 2.5) # true
-
num的类型与
float
型的比较print(type(num) == float) # true
-
检查
num
的类型是否为float
print(isinstance(num, float)) # true
您正在比较一个对象(类型为float
(和一个类(本例中为float
(。要获得True,您应该将num
的类型与float
:进行比较
type(num) == float
你也可以做:
isinstance(num, float)
根据PEP8(python的编码风格约定(,这是更好的。
两者都将返回True
。
实际上num = int(5) / 2
在结果2.5中给你的不是浮点的,当你检查变量的类型时,你必须写这样的
type(num) == float
不num == float
因为num是2.5而不是浮动