You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何isinstance(7.0, int)返回True?详解num.is_integer()及自定义函数疑问

问题解答

关于isinstance(7.0, int)的误解

首先纠正一个错误:isinstance(7.0, int)不会返回True,它实际返回False。7.0是float类型的实例,和int属于完全不同的类型。你看到7.0在代码里返回True,是因为代码走了float分支,调用了num.is_integer()方法,而非isinstance(7.0, int)为真。

return num.is_integer()的作用

这是Python中float类型的内置方法,用来判断当前浮点数的数值是否为整数(即小数部分是否为0):

  • 若浮点数小数部分为0(比如7.0、5.0),返回True;
  • 若小数部分不为0(比如7.5、3.14),返回False。

代码行为的详细解释

你的代码逻辑如下:

def is_integer(num):
    if isinstance(num, float):
        return num.is_integer()
    elif isinstance(num, int):
        return True
    else:
        return False

对应不同输入的执行流程:

  • num=7:属于int类型,进入elif分支,直接返回True;
  • num=7.5:属于float类型,调用is_integer(),因小数部分非0返回False;
  • num=7.0:属于float类型,调用is_integer(),因小数部分为0返回True。

如何严格区分int类型和值为整数的float

如果希望只有int类型输入返回True,像7.0这类float即便数值是整数也返回False,可修改代码为:

def is_strict_integer(num):
    return isinstance(num, int)

内容的提问来源于stack exchange,提问作者ANKESH KAPOOR

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 00:40:36