文章来源:http://blog.csdn.net/zhengzhb/article/details/7296944定义:一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。问题由来:在软件的生命周期内,因为变化、升级和维护等原因需要对软件原有代码进行修改时,可能会给旧代码中引入错误,也可能会使我们不得不对整个功能进行重构,并且需要原有代码经过重新测试。解决方案:当软件需要变化时,尽量通过扩展软件实体的行为来实现变化,而不是通过修改已有的代码来实现变化
系统 2019-08-12 09:29:35 2132
最近有个需求就是页面上执行shell命令,第一想到的就是os.system,复制代码代码如下:os.system('cat/proc/cpuinfo')但是发现页面上打印的命令执行结果0或者1,当然不满足需求了。尝试第二种方案os.popen()复制代码代码如下:output=os.popen('cat/proc/cpuinfo')printoutput.read()通过os.popen()返回的是fileread的对象,对其进行读取read()的操作可以
系统 2019-09-27 17:56:49 2131
枚举类型可以看作是一种标签或是一系列常量的集合,通常用于表示某些特定的有限集合,例如星期、月份、状态等。Python的原生类型(Built-intypes)里并没有专门的枚举类型,但是我们可以通过很多方法来实现它,例如字典、类等:MiracleLove={'MON':'林志玲','TUS':'陈意涵','WEN':'张柏芝','THU':'辛芷蕾','FRI':'周冬雨'}classMiracleLove:MON='林志玲'TUS='陈意涵'WEN='张柏
系统 2019-09-27 17:56:49 2131
Python队列Queue队列是一种先进先出(FIFO)的数据类型,新的元素通过入队的方式添加进Queue的末尾,出队就是从Queue的头部删除元素.用列表来做Queue:queue=[]#初始化一个列表数据类型对象,作为一个队列defenQ():#定义一个入栈方法queue.append(raw_input('EnterNewString:').strip())#提示输入一个入队的String对象,调用Str.strip()保证输入的String值不包含
系统 2019-09-27 17:56:49 2131
大概在Python2.7.xx以前,安装Python时环境变量是需要自己设的,所以自己做了一个批处理文件.bat来设置环境变量Path,通过WMI命令wmic来实现。::检查path中有没有相关路径echo%path%|findstr/i"c:\python27\scripts"&&(gotorun)::先添加,防止没有时修改出错wmicENVIRONMENTcreatename="path",VariableValue="c:\python27\scri
系统 2019-09-27 17:56:30 2131
八大排序算法的Python实现原文地址插入排序插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序,时间复杂度为O(n^2)。是稳定的排序方法。插入算法把要排序的数组分成两部分:第一部分包含了这个数组的所有元素,但将最后一个元素除外(让数组多一个空间才有插入的位置),而第二部分就只包含这一个元素(即待插入元素)。在第一部分排序完成后,再将这个最后元素插入到已排好序的第一部分中。代码实现
系统 2019-09-27 17:55:35 2131
认识模块对于模块,在前面的一些举例中,已经涉及到了,比如曾经有过:importrandom(获取随机数模块)。为了能够对模块有一个清晰的了解,首先要看看什么模块,这里选取官方文档中对它的定义:复制代码代码如下:AmoduleisafilecontainingPythondefinitionsandstatements.Thefilenameisthemodulenamewiththesuffix.pyappended.Withinamodule,themo
系统 2019-09-27 17:55:19 2131
vim有各种强大的插件,这不仅归功于其提供的用来编写插件的脚本语言vimL,还得益于它良好的接口实现,从而支持python等语言编写插件。当vim编译时带有+python特性时就能使用python2.x编写插件,+python3则支持python3.x,可以使用vim--version来查看vim的编译特性。要使用python接口,可以用:hpython来查看vim提供的帮助文档,本文做一个简单的介绍。我们都知道在vim里可以执行bash命令,只需要:!c
系统 2019-09-27 17:54:51 2131
Python函数编程——迭代器我们已经知道,可以直接作用于for循环的数据类型有以下几种:1、类是集合数据类型,如list、tuple、dict、set、str等;2、一类是generator,包括生成器和带yield的generatorfunction。这些可以直接作用于for循环的对象统称为可迭代对象:Iterable,可迭代的意思就是可遍历、可循环。可以使用isinstance()判断一个对象是否是Iterable对象:>>>fromcollecti
系统 2019-09-27 17:54:50 2131
简单的写了一个爬取www.seebug.org上poc的小玩意儿~首先我们进行一定的抓包分析我们遇到的第一个问题就是seebug需要登录才能进行下载,这个很好处理,只需要抓取返回值200的页面,将我们的headers信息复制下来就行了(这里我就不放上我的headers信息了,不过headers里需要修改和注意的内容会在下文讲清楚)headers={'Host':******,'Connection':'close','Accept':******,'Use
系统 2019-09-27 17:54:11 2131
0.引子当需要使用Python处理音频数据时,使用python读取与播放声音必不可少,下面介绍一个好用的处理音频PyAudio工具包。PyAudio是Python开源工具包,由名思义,是提供对语音操作的工具包。提供录音播放处理等功能,可以视作语音领域的OpenCv。1.简介Python学习交流群:1004391443PyAudio为跨平台音频I/O库PortAudio提供Python绑定。使用PyAudio,您可以轻松地使用Python在各种平台上播放和录
系统 2019-09-27 17:53:38 2131
给密码加密是什么:用户注册的密码一般网站管理人员会利用md5方法加密,这种加密方法的好处是它是单向加密的,也就是说,你只有在提前知道某一串密码对应的md5加密码,才能反推出密码是多少,虽然有极小的几率可能造成两个密码加密之后的值相等(这种现象称为碰撞),不过基本上不用担心,因为概率是极低的。在常用的hashlib模块里还有sha1()等方法,它的本质和md5是一致的,只是产生的结果是160bit字节,通常用一个40位的16进制字符串表示。而md5是最常见的
系统 2019-09-27 17:52:27 2131
译注:这是一篇在Stackoverflow上很热的帖子。提问者自称已经掌握了有关PythonOOP编程中的各种概念,但始终觉得元类(metaclass)难以理解。他知道这肯定和自省有关,但仍然觉得不太明白,希望大家可以给出一些实际的例子和代码片段以帮助理解,以及在什么情况下需要进行元编程。于是e-satis同学给出了神一般的回复,该回复获得了985点的赞同点数,更有人评论说这段回复应该加入到Python的官方文档中去。而e-satis同学本人在StackO
系统 2019-09-27 17:52:16 2131
如何在CentOS7上yum安装Python3.6.1CentOS7仍然安装了Python2.7,系统本身也使用它来启用系统命令,所以不要动那个安装。想要利用Python3附带的新语言功能,可以从yum存储库安装Python3.6.1?。先决条件*CentOS7服务器启动并运行*Sudo特权用户安装必要的实用程序正如所有Linux教程一样,首先要安装更新。然后我可以继续安装必要的工具和实用程序。sudoyumupdatesudoyuminstallyum-
系统 2019-09-27 17:50:44 2131
Python基础---变量什么是变量:用来绑定数据对象的标识符一.变量的命名规则:变量名必须为字母或下划线开头,后跟字母或下划线或数字不能使用python的关键字命名命名规则可以被视为一种惯例,并无绝对与强制目的是为了增加代码的识别和可读性在定义变量时,为了保证代码格式,=的左右应该各保留一个空格在Python中,如果变量名需要由二个或多个单词组成时,可以按照以下方式命名每个单词都使用小写字母单词与单词之间使用_下划线连接例如:first_name、ast
系统 2019-09-27 17:50:40 2131