前言缓存属性(cached_property)是一个非常常用的功能,很多知名Python项目都自己实现过它。我举几个例子:bottle.cached_propertyBottle是我最早接触的Web框架,也是我第一次阅读的开源项目源码。最早知道cached_property就是通过这个项目,如果你是一个Web开发,我不建议你用这个框架,但是源码量少,值得一读~werkzeug.utils.cached_propertyWerkzeug是Flask的依赖,是
系统 2019-09-27 17:48:15 2544
我就废话不多说,直接上代码吧!fromPILimportImageGrabimporttimeimportscheduleimportosimportshutilimportdatetimedays=-3#截屏defsavepic():im=ImageGrab.grab()now=time.strftime("%Y_%m_%d_%H_%M_%S",time.localtime())day=time.strftime("%Y%m%d",time.localt
系统 2019-09-27 17:46:40 2544
在linux系统中连接mdb数据库,直接连接的话,mdb默认的驱动无法识别非windows的路径,所以不能使用常规的连接方式DRIVER={MicrosoftAccessDriver(*.mdb)};DBQ=c:\\dir\\file.mdb安装这里我们需要借助一些库来实现第三方的驱动我们需要安装这些包:mdbtools,unixODBC,libmdbodbc如果是支持deb的系统中,如果不能找到libmdbodbc,将以下路径加入到软件源列表中debht
系统 2019-09-27 17:38:14 2544
python数据类型之间怎么转换?数据如果类型不对,在运行中有交集的话就会出现错误,那怎么让两个类型的数据变成同一个类型的呢首先是字符串,在引号里面的内容都是字符串,包括数字需要注意的是里面的数字不能加减整数就是我们小学里面学的那样,这类都是整数同样有小数点的数字分为浮点数,这三个都很好区分下面这里有个例子,一个输出是错误的,而错误的原因就是类型不同像这种问题我们可以转换其中一种类型达到我们要做的要求str表示字符串,而int表示整数,float是浮点数你
系统 2019-09-27 17:37:36 2544
在多个文件或者不同语言协同的项目中,python脚本经常需要从命令行直接读取参数。万能的python就自带了argprase包使得这一工作变得简单而规范。PS:optparse包是类似的功能,只不过写起来更麻烦一些。如果脚本很简单或临时使用,没有多个复杂的参数选项,可以直接利用sys.argv将脚本后的参数依次读取(读进来的默认是字符串格式)。比如如下名为test.py的脚本:importsysprint"Inputargumentis%s"%(sys.a
系统 2019-09-27 17:56:27 2543
一、关联规则关联规则,顾名思义,就是寻找事物之间的关联关系。比如《啤酒与尿布》中,在某个特定时间段,会出现啤酒与尿布同时出现在购物篮中的现象,且出现频率非常高。调研发现这是一群爱喝啤酒的奶爸群体。如果可以通过类似的方式挖掘更多特定的群体需求,就可以进行交叉销售或捆绑销售来提升销售额和利润。Apriori算法就是经典的寻找物品的关联算法。二、Apriori算法原理1、基础概念项集:包含0个或者多个项的集合称为项集频繁项集:那些经常一起出现的物品集合2、关联规
系统 2019-09-27 17:55:14 2543
python2中的urllib2改为python3中的urllib.request四种方式对比:python2的get:#coding=utf-8importurllibimporturllib2word=urllib.urlencode({"wd":"百度"})url='http://www.baidu.com/s'+'?'+wordrequest=urllib2.Request(url)printurllib2.urlopen(request).rea
系统 2019-09-27 17:53:03 2543
01.递归实现快排:defquick_sort(array):iflen(array)<2:returnarrayelse:pivot=array[0]less=[xforxinarray[1:]ifx<=pivot]more=[xforxinarray[1:]ifx>pivot]returnquick_sort(less)+[pivot]+quick_sort(more)a=[1,9,4,2,7,5]print(quick_sort(a))02.冒泡排序
系统 2019-09-27 17:51:51 2543
一、数据准备1、python内置函数range创建一个整数列表,只限于整数range(start,stop,step)计数从start开始,默认从0开始,stop结束,但不包含stop,step为步长,默认为12.numpy中的arange语法与range类似,由开始、结束、步长组成,步长默认为1importnumpyasnpprint(np.arange(0,1,0.1))输出:[0.0.10.20.30.40.50.60.70.80.9]3.numpy
系统 2019-09-27 17:50:13 2543
如下所示:两个函数:Basemap.drawparallels##纬度Basemap.drawmeridians##经度frommpl_toolkits.basemapimportBasemapimportmatplotlib.pyplotaspltimportnumpyasnp#setupLambertConformalbasemap.m=Basemap(width=12000000,height=9000000,projection='lcc',res
系统 2019-09-27 17:48:51 2543
正常情况下,当我们定义了一个class,创建了一个class的实例后,我们可以给该实例绑定任何属性和方法,这就是动态语言的灵活性。先定义class:复制代码代码如下:>>>classStaff(object):...pass...然后,尝试给实例绑定一个属性:复制代码代码如下:>>>s=Staff()>>>s.name='jack'>>>prints.namejack>>>还可以尝试给实例绑定一个方法:复制代码代码如下:>>>defset_age(self
系统 2019-09-27 17:37:40 2543
python导入自定义模块和包python包包是一个分层次的文件目录结构,它定义了一个由模块及子包,和子包下的子包等组成的Python的应用环境。简单来说,包就是文件夹,但该文件夹下必须存在__init__.py文件,该文件的内容可以为空。__init__.py用于标识当前文件夹是一个包。导入同级目录文件如果需要引入同级目录下的文件,则可以采用import一个模块的形式,即可调用。考虑同一目录下的两个python文件,test.py需要调用pytools.
系统 2019-09-27 17:57:50 2542
前言在数据相关的测试中,我们经常会需要去构造数据,随机生成数据。大部分人的写法会是用random随机生成:比如我们要生成随机的姓名,我们要构造下面的一段代码:defrandom_first_name():name=['赵','钱','孙','李','周','吴','郑','王','冯','陈','褚','卫','蒋','沈','韩','杨','朱','秦','尤','许','何','吕','施']returnrandom.choice(name)defra
系统 2019-09-27 17:56:23 2542
Selenium是当前主流的web自动化工具,提供了多种浏览器的支持(Chrome,Firefox,IE等等),当然大家也可以用自己喜欢的语言(Java,C#,Python等)来写用例,很容易上手。当大家写完第一个自动化用例的时候肯定感觉”哇...好牛x“,但是大家用余光扫了一下代码后,内心也许是崩溃的,因为太乱了!像这样:__author__='xua'fromseleniumimportwebdriverfromselenium.webdriver.c
系统 2019-09-27 17:52:50 2542
编写安全的代码很困难,当你学习一门编程语言、一个模块或框架时,你会学习其使用方法。在考虑安全性时,你需要考虑如何避免代码被滥用,Python也不例外,即使在标准库中,也存在着许多糟糕的实例。然而,许多Python开发人员却根本不知道这些。以下为10个Python常见安全漏洞,排名不分先后。1.输入输出注入攻击影响广泛且很常见,注入有很多种类,它们影响所有的语言、框架和环境。SQL注入是直接编写SQL查询(而非使用ORM)时将字符串与变量混合。我读过很多代码
系统 2019-09-27 17:51:52 2542