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效率高的不是一个级别的,测完你心里就有数了