建造者模式,也是一种创建新对象的设计方法,和C++中的虚函数很类似,但是用到了python自身的虚基类ABCMeta。1.应用场景:某个类中的函数较多,且实现比较复杂,很多时候需要继承的子类重载或者重新定义逻辑;2.背景基础:由于用到python中虚函数,需要了解abc模块中的ABCMeta和python中类创建对象时的__metaclass__属性含义。一般地,在某个类中如果定义__metaclass__=something时,简单地说是,创建对象时,会
系统 2019-09-27 17:52:26 1858
3.4.5断言断言(assertions)的使用方式类似于if语句,只是在不满足条件时,会直接抛出异常。类似于下面的if语句(伪代码)ifnotcondition:#如果不满足条件,会直接抛出异常,程序会中断crashprogram那么究竟为什么需要这样的代码呢?主要原因为需要检测程序在某个地方是否满足条件,如果不满足条件,应该及时通知开发人员,而不是将这些bug隐藏起来,知道关键的时候在崩溃。其实在TDD中经常使用断言,TDD会在程序发现异常时执行断言,
系统 2019-09-27 17:52:20 1858
扫描服务器ip开放端口,用线程池ThreadPoolExecutor,i7的cpu可以开到600个左右现成,大概20s左右扫描完65535个端口,根据电脑配置适当降低线程数#!/usr/local/python3.6.3/bin/python3.6#coding=utf-8importsocketimportdatetimeimportrefromconcurrent.futuresimportThreadPoolExecutor,waitDEBUG=Fa
系统 2019-09-27 17:52:19 1858
yield的功能类似于return,但是不同之处在于它返回的是生成器。生成器生成器是通过一个或多个yield表达式构成的函数,每一个生成器都是一个迭代器(但是迭代器不一定是生成器)。如果一个函数包含yield关键字,这个函数就会变为一个生成器。生成器并不会一次返回所有结果,而是每次遇到yield关键字后返回相应结果,并保留函数当前的运行状态,等待下一次的调用。由于生成器也是一个迭代器,那么它就应该支持next方法来获取下一个值。基本操作#通过`yield`
系统 2019-09-27 17:52:18 1858
本文实例为大家分享了python中的代码行数统计,供大家参考,具体内容如下思路:统计文件中代码的总行数减去空行单行注释以及多行注释功能:1.获取文件内容的总行数2.排除空行单行注释多行注释defcode_statistics(path):##打开这个文件withopen(path,'r',encoding='utf-8')asopenFile:#按列读取fileline=openFile.readlines()#给非代码行一个变量i=0#整个文件里面内容的
系统 2019-09-27 17:51:02 1858
阅读更多Python调用hanlp的方法此前有分享过,本篇文章分享自“逍遥自在017”的博客,个别处有修改,阅读时请注意!1.首先安装jpype首先各种坑,jdk和python版本位数必须一致,我用的是JPype1-py3版本号0.5.5.2、1.6jdk和Python3.5,win764位下亲测没问题。否则死翘翘,有可能虚拟机都无法启动:出错调试,原因已说;测试成功会有输出。下面启动虚拟机跑hanlp2.下载各种安装包使用自定义的HanLP——HanLP
系统 2019-09-27 17:50:23 1858
作者:chen_h微信号&QQ:862251340微信公众号:coderpai(一)机器学习中的集成学习入门(二)bagging方法(三)使用Python进行交易的随机森林算法(四)Python中随机森林的实现与解释(五)如何用Python从头开始实现Bagging算法决策树是一种简单而强大的预测建模技术,但它们存在高方差。这意味着在给定不同的训练数据的情况下,树可以得到非常不同的结果。为了使决策树更加健壮并实现更好性能,我们会采用集成学习方法,其中一种是
系统 2019-09-27 17:49:29 1858
最近被多线程给坑了下,没意识到类变量在多线程下是共享的,还有一个就是没意识到内存释放问题,导致越累越大1.python类变量在多线程情况下的是共享的2.python类变量在多线程情况下的释放是不完全的3.python类变量在多线程情况下没释放的那部分内存是可以重复利用的importthreadingimporttimeclassTest:cache={}@classmethoddefget_value(self,key):value=Test.cache.
系统 2019-09-27 17:48:22 1858
创建Deque序列:fromcollectionsimportdequed=deque()Deque提供了类似list的操作方法:d=deque()d.append('1')d.append('2')d.append('3')len(d)d[0]d[-1]输出结果:3'1''3'两端都使用pop:d=deque('12345')len(d)d.popleft()d.pop()d输出结果:5'1''5'deque(['2','3','4'])我们还可以限制d
系统 2019-09-27 17:47:59 1858
python邮件列表里有人发表言论说“python3在10内都无法普及”。在我看来这样的观点有些过于悲观,python3和python2虽然不兼容,但他们之间差别并没很多人想像的那么大。你只需要对自己的代码稍微做些修改就可以很好的同时支持python2和python3的。下面我将简要的介绍一下如何让自己的python代码如何同时支持python2和python3。一、放弃python2.6之前的python版本python2.6之前的python版本缺少一
系统 2019-09-27 17:47:38 1858