Python如何检查变量为int整数类型而非float浮点类型
原有代码失效原因
你写的if var is int逻辑不成立:is运算符的作用是判断左右两个对象是否为内存中的同一个实例,而int是Python内置的整数类型对象本身,存储数值的变量不可能和类型对象是同一个实例,因此这个判断永远返回False,自然达不到预期效果。
正确实现方案
根据你要严格区分int类型、排除float类型的需求,有两种常用写法:
- 严格匹配类型,不接受int的任何子类(比如
bool类型,bool是int的子类,True实际对应整数1、False对应0),用type()获取变量真实类型后对比:
var = 2.5 if type(var) is int: print(var) else: pass
- 允许匹配int的子类(比如自定义的继承int的类型),同时排除float类型,用
isinstance()判断:
var = 2.5 if isinstance(var, int): print(var) else: pass
注意避坑
不要使用值判断逻辑(比如var % 1 == 0、var.is_integer())来做类型检查,这类逻辑会把值为整数的float类型(比如2.0)误判为符合要求,达不到区分int和float类型的目的。反例如下:
var = 2.0 # 错误写法:var类型是float,但是值为整数,会被误判 if var % 1 == 0: print("误判:var实际是float类型")
内容的提问来源于stack exchange,提问作者Parsa Ad
相关产品推荐
相关产品推荐

