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

如何检测Python变量是否为整数(含numpy.int*等特殊类型)

通用整数类型检测方法

在Python中,直接用isinstance(a, int)只能检测普通整数类型,无法匹配numpy等库提供的np.int64、np.int32这类特殊整数类型;而isinstance(b, np.integer)又无法识别普通的int类型。以下是几种通用的解决方法:

方法一:使用标准库numbers.Integral抽象基类

这是最推荐的通用方案,Python标准库numbers模块中的Integral抽象基类会被所有符合整数规范的类型(包括普通int、numpy整数类型,以及其他遵循规范的第三方库整数类型)注册,能实现真正的通用检测。

from numbers import Integral
import numpy as np

# 测试普通整数
a = 1
print(isinstance(a, Integral))  # 输出:True

# 测试numpy整数类型
b = np.int64(1)
c = np.int32(2)
print(isinstance(b, Integral))  # 输出:True
print(isinstance(c, Integral))  # 输出:True

方法二:组合类型元组(仅兼容普通int和numpy整数)

如果只需要兼容普通int和numpy的整数类型,可以直接将两种类型放进元组中进行判断:

import numpy as np

def is_integer(x):
    return isinstance(x, (int, np.integer))

a = 1
b = np.int64(1)
print(is_integer(a))  # 输出:True
print(is_integer(b))  # 输出:True

注意:这种方法仅覆盖指定的类型,无法兼容其他第三方库的自定义整数类型。

方法三:通过转换验证(需注意浮点数场景)

通过尝试将对象转换为整数并验证是否与原对象相等,这种方法能覆盖更多场景,但需要处理浮点数的特殊情况(比如2.0会被误判为整数):

基础版本(包含浮点数整数)

def is_integer(x):
    try:
        return int(x) == x
    except (ValueError, TypeError):
        return False

import numpy as np

a = 1
b = np.int64(1)
c = 2.0
d = "3"

print(is_integer(a))  # 输出:True
print(is_integer(b))  # 输出:True
print(is_integer(c))  # 输出:True
print(is_integer(d))  # 输出:False

排除浮点数的版本

如果需要排除2.0这类浮点数,可以先判断类型:

def is_integer(x):
    if isinstance(x, float):
        return False
    try:
        return int(x) == x
    except (ValueError, TypeError):
        return False

print(is_integer(2.0))  # 输出:False

内容的提问来源于stack exchange,提问作者Thomas Arildsen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 09:25:04