判断数据类型

对于入参,我们经常需要判断数据类型,一般,我们的用法是 type() 方法。如下代码演示:type(__SOME_PARAME_) == str

但是我查阅相关的资料,更加推荐使用 isinstance 函数来进行判断,理由如下:isinstance() 与 type() 区别:

1. type() 不会认为子类是一种父类类型,不考虑继承关系。

2. isinstance() 会认为子类是一种父类类型,考虑继承关系。

如果要判断两个类型是否相同推荐使用 isinstance()。

我是不太明白这个意思,只是学会了它的用法如下:isinstance(1, int)

isinstance([1,2], list)

执行结果如下:

可以用来判断任何已知类型。

判断“字符串或数字”是否是整数(包括负数)

首先,判断一个字符串是否是正整数,我们会想到 str.isdigit() 方法。但如果输入的数字,则会报错,因为数字并不支持该方法。此外,它也不支持负数。很显然,这并不符合我的要求。

我的最终代码是:

def isInt(num):
try:
num = int(str(num))
return isinstance(num, int)
except:
return False

运行结果如下:

无论是数字还是数字字符串,都能被 int 执行,并且包含负数。但是,浮点型数字能被 int 正确执行,而浮点型数字字符串缺不行。因此,我先将输入参数转化成字符串型,就可以避免这个小坑了。

唯一的问题是,如果是其他内容,则会出现报错。因此,这里使用了 try 方法来执行这段代码,报错直接返回 False 。