判断整数需分三类:类型用isinstance(x, int);浮点数是否为整数值用f.is_integer();字符串是否为整数用try-except转int。
Python 中判断一个值是否为整数,关键看你想判断的是“数值类型”还是“字符串形式的整数”,两者方法不同。
用
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
有时你拿到的是 float 类型,但想确认它“数学上等于某个整数”。可用 float.is_integer() 方法:
4.0.is_integer() → True
4.5.is_integer() → False
(8.0 / 2.0).is_integer() → True
注意:该方法只适用于 float 对象,对 int 或字符串会报错。
比如 "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 可能被误判)。