建造者模式,也是一种创建新对象的设计方法,和C++中的虚函数很类似,但是用到了python自身的虚基类ABCMeta。1.应用场景:某个类中的函数较多,且实现比较复杂,很多时候需要继承的子类重载或者重新定义逻辑;2.背景基础:由于用到python中虚函数,需要了解abc模块中的ABCMeta和python中类创建对象时的__metaclass__属性含义。一般地,在某个类中如果定义__metaclass__=something时,简单地说是,创建对象时,会
系统 2019-09-27 17:52:24 2081
前言或许你已经用过装饰器,它的使用方式非常简单但理解起来困难(其实真正理解的也很简单),想要理解装饰器,你需要懂点函数式编程的概念,python函数的定义以及函数调用的语法规则等,虽然我没法把装饰器变得简单,但是我希望可以通过下面的步骤让你由浅入深明白装饰器是什么。假定你拥有最基本的Python知识,本文阐述的东西可能对那些在工作中经常接触Python的人有很大的帮助。1、函数(Functions)在Python里,函数是用def关键字后跟一个函数名称和一
系统 2019-09-27 17:51:47 2081
注释PIL是python的一个图像处理库,功能非常强大,可以实现图片的格式转换、旋转、裁剪、改变尺寸、像素处理、图片合并等等操作。PIL已经更名为pillow所以在终端输入pip3installpil会报错,而应该输入pip3installpillow进行安装。源码fromPILimportImagedefImage_PreProcessing():#待处理图片存储路径im=Image.open('UnprocessImage.jpeg')#Resize图
系统 2019-09-27 17:50:56 2081
无论哪种编程语言,时间肯定都是非常重要的部分,今天来看一下python如何来处理时间和python定时任务,注意咯:本篇所讲是python3版本的实现,在python2版本中的实现略有不同,有时间会再写一篇以便大家区分。1.计算明天和昨天的日期#!/usr/bin/envpython#coding=utf-8#获取今天、昨天和明天的日期#引入datetime模块importdatetime#计算今天的时间today=datetime.date.today(
系统 2019-09-27 17:50:43 2081
事情是这样的,我写了一个tornado的服务,过程当中我用logging记录一些内容,由于一开始并没有仔细观察tornado自已的日志管理,所以我就一般用debug来记录普通日志,error记录有问题的日志,但是当服务跑起来以后才发现,tornado的访问日志的级别是info,也就是20,debug是10的,所以如果我定义了日志的级别是debug,那么默认情况下肯定也会输出到日志文件中的。但是我现在并不关心访问日志,而且由于我这个服务可能每时每刻都会有访问
系统 2019-09-27 17:50:30 2081
1.创建一个边界值为1而内部都是0的数组,图例如下:[提示:]解此题可以先把所有值都设置为1,这是大正方形;其次,把边界除外小正方形全部设置为0。本题用到numpy的切片原理。多维数组同样遵循x[start:stop:step]的原理。[1.1.1.1.1.1.1.1.1.1.][1.0.0.0.0.0.0.0.0.1.][1.0.0.0.0.0.0.0.0.1.][1.0.0.0.0.0.0.0.0.1.][1.0.0.0.0.0.0.0.0.1.][1
系统 2019-09-27 17:49:14 2081
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。n==1时,f(n)==1n==2时,f(n)==2n==3时,f(n)=f(2)+f(1)=最后一步跳1个+最后一步跳2个n==4时,f(n)=f(3)+f(2)=最后一步跳1个+最后一步跳2个···n-->f(n)==f(n-1)+f(n-2)#-*-coding:utf-8-*-classSolution:defjumpFloor(s
系统 2019-09-27 17:48:42 2081
image前不久,我写了一篇文章回顾Python中print的发展历史,提到了两条发展线索:明线:早期的print语句带有C和Shell的影子,是个应用程序级的statement,在最初十几年里,经历过PEP-214和PEP-259的改进;再到2009年的大版本3.0,由语句改成了print()函数,还在3.3版本,做过一次功能增强,最终上升成为一等的内置函数。暗线:介绍了print的竞争对手们,像传统的日志模块logging、调试模块pdb、主流IDE的
系统 2019-09-27 17:48:27 2081
写python协程时使用gevent模块和queue模块可以大大提高爬虫速度。在同时爬取多个网站时,原来用for循环一个网站一个网站按循序顺序爬,就像先烧饭后烧菜,两个步骤异步进行。使用多协程可以让爬虫自己选择爬取顺序,就像边烧饭边烧菜,两个步骤同步进行,速度自然快了。不多说了,来看下代码吧:fromgeventimportmonkeymonkey.patch_all()#打上多协程布丁,下面的程序就可以执行多协程了importrequests,geven
系统 2019-09-27 17:47:59 2081
sqrt()方法返回x的平方根(x>0)。语法以下是sqrt()方法的语法:importmathmath.sqrt(x)注意:此函数是无法直接访问的,所以我们需要导入math模块,然后需要用math的静态对象来调用这个函数。参数x--这是一个数值表达式。返回值此方法返回x的平方根,对于x>0。例子下面的例子显示了sqrt()方法的使用。#!/usr/bin/pythonimportmath#Thiswillimportmathmoduleprint"mat
系统 2019-09-27 17:47:36 2081