为什么它不显示为“float”类型

why doesn't it show as a type `float`

当我发现一些我个人不知道的东西时,我只是在摆弄 python 命令提示符。

这是我要解开的一个谜团:

num = int(5) / 2

num == float # False

我发现它没有 return True 很奇怪。所以我尝试了其他运营商。

num == int # False
num == str # False

它们都是 return 错误,但是当我检查它是哪个时 type。它给了我这个。

type(num) # Float

当我将它与 float 运算符进行比较时,它不应该 returned 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)和一个 class(在本例中为 float)。 要获得 True,您应该将 num 的类型与 float:

进行比较
type(num) == float

您还可以这样做:

isinstance(num, float)

根据 PEP8(python 的编码风格约定)哪个更好。

两者都会 return True.

实际上 num = int(5) / 2 给你的结果 2.5 不是浮动的,当你检查变量的类型时你必须写这样的东西

type(num) == float 不是 num == float 因为 num 是 2.5 而不是 float