首页 > 代码库 > Python基础课:测试type 和 isinstance 那个的速度更快

Python基础课:测试type 和 isinstance 那个的速度更快

废话不说,直接上源码

 1 #装饰器
 2 import time
 3 def runtime(func):
 4     def inner_func(*args, **kwargs):
 5         startTime = time.time() 
 6         res = func(*args)
 7         print(run time:{}.format(time.time()- startTime))
 8         return res
 9     return inner_func
10 
11 #测试type函数
12 def test_type(*args, **kwargs):
13     types = [str,int,float,bool,tuple,list,set,dict]  #定义一个常用类型列表
14     type_dict= {}                                     #定义一个返回集类型字典
15     if args:                                          #确定是否有参数
16         for arg in args:                              #遍历参数
17             for t in types:                           #遍历类型
18                 if type(arg) == t:                    #用type函数匹配类型
19                     type_dict[str(arg)] = t           #把arg转成键名,t作为键值放入字典
20                     break                             #中断循环
21     return type_dict
22 
23 #测试isinstance函数
24 def test_isinstance(*args, **kwargs):
25     types = [str,int,float,bool,tuple,list,set,dict]
26     type_dict= {}
27     if args:
28         for arg in args:
29             for t in types:
30                 if isinstance(arg, t) == True:      #用isinstance函数匹配类型
31                     type_dict[str(arg)] = t
32                     break
33     return type_dict
34 
35 @runtime
36 def for_loop_type(*args, **kwargs):
37     for i in range(100000):                         #循环调用test_type函数100000次
38         test_type(args, kwargs)
39 
40 @runtime
41 def for_loop_isinstance(*args, **kwargs):
42     for i in range(10000):                          #循环调用test_isinstance函数100000次
43         test_isinstance(args, kwargs)
44         
45         
46 #for_loop_type(1,2,3,4,5,6,7,8,9,2,0,True,(‘a‘,‘b‘,‘c‘),{‘a‘,‘b‘,‘c‘},[‘a‘,‘b‘,‘c‘],{‘name‘:‘tom‘,‘age‘:20})
47 #for_loop_isinstance(1,2,3,4,5,6,7,8,9,2,0,True,(‘a‘,‘b‘,‘c‘),{‘a‘,‘b‘,‘c‘},[‘a‘,‘b‘,‘c‘],{‘name‘:‘tom‘,‘age‘:20})

小伙伴自己去测试吧,我测完的数据显示,isinstance比type效率高的不是一个级别的,测完你心里就有数了

Python基础课:测试type 和 isinstance 那个的速度更快