最近一直在写一套基于 python
的 sanic
web
框架库的 restFul
接口的底层框架。由于我是初学,挑战这个任务基本上是属于不自量力型的。但目前我核心构架已经完全写出来了,我会在近期整理好相关资料后,写一系列的文章分享给大家。
这个挑战的过程很简单,因为大家知道我只是一个前端工程师。但是挑战的过程充满乐趣,今天,我就将我遇到的一些小的知识点,做一个汇总,也方便以后自己查找和复习。
判断数据类型
对于入参,我们经常需要判断数据类型,一般,我们的用法是 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
。
本文由 FungLeo 原创,允许转载,但转载必须保留首发链接。