为什么变量a是整数时,a == type(int)后的打印代码未执行?
错误原因
你写的判断逻辑存在两处核心错误:
- 首先,
type(int)的返回值不是你以为的整数类型:int本身就是Python的内置类型对象,把类型对象传入type()函数,返回的是<class 'type'>(也就是所有类型对象所属的类),拿数值12345和type类比对,永远不可能相等。 - 其次,就算你把条件改成
a == int也不会成立:a存储的是int类型的实例,而int是类型本身,实例和类型对象的值当然不一样。
正确的类型判断写法
有两种常用的正确写法实现你的需求:
直接比对类型(仅匹配完全一致的类型)
写法为:a = 12345 if type(a) == int: print(True)运行后就会输出
True,如果你把int替换为float,因为a是整数类型,所以条件不成立不会输出,把a赋值为12345.0时判断float才会触发打印。兼容继承的类型判断(更推荐)
用Python官方推荐的isinstance()方法,写法为:if isinstance(a, int): print(True)这个方法可以正确识别子类实例的类型,适用场景比直接比对
type()更广
内容的提问来源于stack exchange,提问作者hefu fhiwh
相关产品推荐
相关产品推荐

