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

时间: 2024-08-07 16:58:51

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

玩转python之测试一个对象是否是类字符串

提到类型测试,我首先想到python中“鸭子类型”的特点,所谓鸭子类型,即如果它走路像鸭子,叫声也像鸭子, 那么对于我们的应用而言,就可以认为它是鸭子了!这一切都是为了功能复用. 我们总是需要测试一个对象,尤其是当写一个函数或者方法时,经常需要测试传入的参数是否是一个字符串: 下面这个方法利用了内建的isinstance和basestring来简单快速检查某个对象是否是字符串或者Unicode对象: def is_string(anobj): return isinstance(anobj, b

老司机带你用vagrant打造一站式python开发测试环境

前言 作为一个学习和使用Python的老司机,好像应该经常总结一点东西的,让新司机尽快上路,少走弯路,然后大家一起愉快的玩耍. 今天,咱们就使用vagrant配合xshell打造一站式Python开发测试环境. 目的 让你在Windows下,也能愉快的使用Linux环境调试Python. 适用人群:Python新手和希望在Windows下使用Linux环境调试Python的小伙伴们. 难度:super easy 最终效果:只用一个xshell终端(其他类似的都可以),启动ubuntu虚拟机,py

python生成测试图片

直接代码 1 import cv2.cv as cv 2 saveImagePath = 'E:/ScreenTestImages/' 3 4 colorRed = [0,0,255] 5 colorGreen = [0,255,0] 6 colorBlue = [255,0,0] 7 colorWhite = [255,255,255] 8 colorBlack = [0,0,0] 9 colorAqua = [255,255,0] 10 colorFuchsia = [255,0,255]

Jenkins自动化构建python nose测试

简介 通过Jenkins自动化构建python nose测试分两步: 1. 创建节点(节点就是执行自动化测试的机器): 2. 创建任务并绑定节点(用指定的机器来跑我们创建的任务,这里我们选择执行一段脚本). 创建节点 1. 登录jenkins平台,在左侧的节点中随便找一个节点点进去,然后在导航栏点击“nodes”-->点击“创建节点”-->输入“节点名称”-->选择“Permanent Agent”-->点击“OK”: 2. 指定jenkins的工作目录,随便指定-->点击“

Python渗透测试工具合集

Python渗透测试工具合集 如果你热爱漏洞研究.逆向工程或者渗透测试,我强烈推荐你使用 Python 作为编程语言.它包含大量实用的库和工具, 本文会列举其中部分精华. 网络 Scapy, Scapy3k: 发送,嗅探,分析和伪造网络数据包.可用作交互式包处理程序或单独作为一个库. pypcap, Pcapy, pylibpcap: 几个不同 libpcap 捆绑的python库 libdnet: 低级网络路由,包括端口查看和以太网帧的转发 dpkt: 快速,轻量数据包创建和分析,面向基本的

由 '' in 'abc' return True 引发的思考----Python 成员测试操作

最近遇到判断字典中是否存在空字符串'',这个很好判断,直接用:'' in ['a','b','c'],就可以直接判断出来:但是当我对字符串使用 "in" 方法进行判断的时候,发现:'' in 'abc' 仍然会返回True,对于这个问题,之前一直没有注意到过其中的原理,现在去进行探索总结一下: 首先,查看官方文档:https://docs.python.org/2/reference/expressions.html#not-in 文档在5.9.2中:Membership test o

python环境测试MySQLdb、DBUtil、sqlobject性能

python环境测试MySQLdb.DBUtil.sqlobject性能 首先介绍下MySQLdb.DBUtil.sqlobject: (1)MySQLdb 是用于Python连接Mysql数据库的接口,它实现了 Python 数据库API 规范 V2.0,基于 MySQL C API 上建立的.除了MySQLdb外,python还可以通过oursql, PyMySQL, myconnpy等模块实现MySQL数据库操作: (2)DBUtil中提供了几种连接池,用以提高数据库的访问性能,例如Poo

接口自动化:Jenkins 自动构建python+nose测试

参考: http://www.cnblogs.com/LanTianYou/p/6559916.html#_label1 http://blog.csdn.net/limm33/article/details/51191263 通过Jenkins自动化构建python nose测试分两步: 1. 创建节点(节点就是执行自动化测试的机器): 2. 创建任务并绑定节点(用指定的机器来跑我们创建的任务,这里我们选择执行一段脚本) 1,创建节点: jenkins->系统管理->管理节点->新增节

python nose测试框架全面介绍六--框架函数别名

之前python nose测试框架全面介绍二中介绍了nose框架的基本构成,但在实际应该中我们也会到setup_function等一系列的名字,查看管网后,我们罗列下nose框架中函数的别名 1.package中写在__init__.py中的函数 setup_package 用setup, setUp, or setUpPackage也可以 teardown_package 用teardown, tearDown, or tearDownPackage也可以 2.函数形式组成的用例 setup_