判断整数需分三类:类型用isinstance(x, int);浮点数是否为整数值用f.is_integer();字符串是否为整数用try-except转int。

Python 中判断一个值是否为整数,关键看你想判断的是“数值类型”还是“字符串形式的整数”,两者方法不同。
判断变量是否为整数类型(int)
用 isinstance(x, int) 最准确、最推荐。它能正确区分 int、float、bool(注意:bool 是 int 的子类,isinstance(True, int) 返回 True)、以及自定义数字类型。
-
isinstance(5, int)→True -
isinstance(-3, int)→True -
isinstance(3.14, int)→False -
isinstance("123", int)→False
判断浮点数是否表示整数值(如 4.0、-7.0)
有时你拿到的是 float 类型,但想确认它“数学上等于某个整数”。可用 float.is_integer() 方法:
-
4.0.is_integer()→True -
4.5.is_integer()→False -
(8.0 / 2.0).is_integer()→True
注意:该方法只适用于 float 对象,对 int 或字符串会报错。
立即学习“Python免费学习笔记(深入)”;
判断字符串是否只包含整数(可选正负号)
比如 "123"、"-45" 是合法整数字符串,而 "12.3"、"abc"、"12a" 不是。推荐用 try/except + int() 转换尝试:
- 安全可靠,兼容带符号、无前导零(除非是单个
"0") - 比
str.isdigit()更准(后者不支持负号,且对"-123"返回False)
示例:
def is_int_string(s):
try:
int(s)
return True
except (ValueError, TypeError):
return False
is_int_string("123") # True
is_int_string("-45") # True
is_int_string("0") # True
is_int_string("3.14") # False
is_int_string("12a") # False
不推荐的方法(容易出错)
type(x) == int:绕过继承关系,无法识别子类(如某些 NumPy 整数类型);
str.isdigit():不支持负数、空字符串、带空格或符号的字符串;
x == int(x):仅适用于数字类型,且对 float 有精度风险(如 1e17 + 0.1 可能被误判)。











