-
python设计模式之解释器模式
解释器模式意义:开发者自定义一种“有内涵”的语言(或者叫字符串),并设定相关的解释规则,输入该字符串后可以输出公认的解释,或者执行程序可以理解的动作。这种模式被用在 SQL 解析、符号处理引擎等解释器模式要实现两个核心角色: 终结符表达式:实现与文法中的元素相关联的解释操作,通常一个解释器模式中只有一个终结符表达式,但有多个实例,对应不同的终结符。终结符一半是文法中的运算单元,比如有一个简单的公式R=R1+R2,在里面R1和R2就是终结符,对应的解析R1和R2的解释器就是终结符表达式。 ...…
-
python设计模式之享元模式
享元模式意义:运用共享技术有效地支持大量细粒度的对象。适用性: 一个应用程序使用了大量的对象。 完全由于使用大量的对象,造成很大的存储开销。 对象的大多数状态都可变为外部状态。 如果删除对象的外部状态,那么可以用相对较少的共享对象取代很多组对象。 应用程序不依赖于对象标识。由于Flyweight 对象可以被共享,对于概念上明显有别的对象,标识测试将返回真值。 举例: ```class FlyweightBase(object): def offer(self): ...…
-
python设计模式之代理模式
代理模式意义:为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。组成: 抽象角色:通过接口或抽象类声明真实角色实现的业务方法。 代理角色:实现抽象角色,是真实角色的代理,通过真实角色的业务逻辑方法来实现抽象方法,并可以附加自己的操作。 真实角色:实现抽象角色,定义真实角色所要实现的业务逻辑,供代理角色调用。适用性: 远程代理(Remote Proxy )为一个对象在不同的地址空间...…
-
python设计模式之外观模式
外观模式意义:为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。适用性: 当你要为一个复杂子系统提供一个简单接口时。子系统往往因为不断演化而变得越来越复杂。大多数模式使用时都会产生更多更小的类。这使得子系统更具可重用性,也更容易对子系统进行定制,但这也给那些不需要定制子系统的用户带来一些使用上的困难。Facade 可以提供一个简单的缺省视图,这一视图对大多数用户来说已经足够,而那些需要更多的可定制性的用户可以越过facade层...…
-
python设计模式之装饰器模式
装饰器模式意义:动态地给一个对象添加一些额外的职责。就增加功能来说,Decorator 模式相比生成子类更为灵活。适用性 在不影响其他对象的情况下,以动态、透明的方式给单个对象添加职责。 处理那些可以撤消的职责。 当不能采用生成子类的方法进行扩充时。一种情况是,可能有大量独立的扩展,为支持每一种组合将产生大量的子类,使得子类数目呈爆炸性增长。另一种情况可能是因为类定义被隐藏,或类定义不能用于生成子类。举例:#函数装饰器from functools import wrapsimport...…
-
python设计模式之组合模式
组合模式意义:将对象组合成树形结构以表示“部分-整体”的层次结构。C o m p o s i t e 使得用户对单个对象和组合对象的使用具有一致性。适用性: 你想表示对象的部分-整体层次结构。 你希望用户忽略组合对象与单个对象的不同,用户将统一地使用组合结构中的所有对象。举例:class ComponentBases(object): def __init__(self, name): slef.name = name def add(self, obj): ...…
-
python设计模式之桥接模式
桥接模式意义:将抽象部分与它的实现部分分离,使它们都可以独立地变化。适用性: 你不希望在抽象和它的实现部分之间有一个固定的绑定关系。例如这种情况可能是因为,在程序运行时刻实现部分应可以被选择或者切换。 类的抽象以及它的实现都应该可以通过生成子类的方法加以扩充。这时Bridge 模式使你可以对不同的抽象接口和实现部分进行组合,并分别对它们进行扩充。 举例: ```class A(object):def run(self, name): print(f”my name...…
-
python设计模式之适配器模式
适配器模式意义:将一个类的接口转换成客户希望的另外一个接口。Adapter 模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。适用性: 你想使用一个已经存在的类,而它的接口不符合你的需求。 你想创建一个可以复用的类,该类可以与其他不相关的类或不可预见的类(即那些接口可能不一定兼容的类)协同工作。 (仅适用于对象Adapter )你想使用一些已经存在的子类,但是不可能对每一个都进行子类化以匹配它们的接口。对象适配器可以适配它的父类接口。 举...…
-
python设计模式之单例模式
单例模式保证一个类仅有一个实例,并提供一个访问它的全局访问点。意义: 当类只能有一个实例而且客户可以从一个众所周知的访问点访问它时。 当这个唯一实例应该是通过子类化可扩展的,并且客户应该无需更改代码就能使用一个扩展的实例时。举例:class Singleton(object): def __new__(cls, *args, **kwargs): if not hasattr(cls, '_instance'): cls._instance =...…
-
python设计模式之原型模式
原型模式意义:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。适用性:当要实例化的类是在运行时刻指定时,例如,通过动态装载;或者为了避免创建一个与产品类层次平行的工厂类层次时;或者当一个类的实例只能有几个不同状态组合中的一种时。建立相应数目的原型并克隆它们可能比每次用合适的状态手工实例化该类更方便一些。举例:import copyclass Information(object): """个人信息""" def __init__(self): se...…
-
python设计模式之抽象工厂
抽象工厂意义:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。适用性: 一个系统要独立于它的产品的创建、组合和表示时。 一个系统要由多个产品系列中的一个来配置时。 当你要强调一系列相关的产品对象的设计以便进行联合使用时。 当你提供一个产品类库,而只想显示它们的接口而不是实现时。举例:class A(object): def __init__(self): self.word = "运行A" def run(self): p...…
-
python设计模式之建造者模式
###意义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。适用性: 当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。 当构造过程必须允许被构造的对象有不同的表示时。 举例: ```class Builder(object): “"”建造流程:原料—施工””” def init(self): self.materiel = None self.design = None def run(self):...…
-
python设计模式之工厂模式
工厂模式意义:定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method 使一个类的实例化延迟到其子类。适用性: 当一个类不知道它所必须创建的对象的类的时候。 当一个类希望由它的子类来指定它所创建的对象的时候。 当类将创建对象的职责委托给多个帮助子类中的某一个,并且你希望将哪一个帮助子类是代理者这一信息局部化的时候。举例:#python3class A(object): def __init__(self): self.word = "运行...…
-
linux下的压缩解压方法
Linux下的tar压缩解压缩命令详解tar-c: 建立压缩档案-x:解压-t:查看内容-r:向压缩归档文件末尾追加文件-u:更新原压缩包中的文件这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个。下面的参数是根据需要在压缩或解压档案时可选的。-z:有gzip属性的-j:有bz2属性的-Z:有compress属性的-v:显示所有过程-O:将文件解开到标准输出下面的参数-f是必须的-f: 使用档案名字,切记,这个参数是最后一个参数,后面只能接档案名。命令举例说明...…
-
python操作Excel
读Excel整个文件读取# -*- coding: utf-8 -*- import sys reload(sys) sys.setdefaultencoding('utf8') #python2对中文支持不是很友好,这样可以在py文件中写中文了import xlrddef read_file(file_path): book = xlrd.open_workbook(file_path) #得到 Excel 文件的 book 对象,实例化对象 sheet = book....…
-
virtualenv和virtualenvwrapper安装与使用
virtualenv 在python开发中,我们可能会遇到一种情况,就是当前的项目依赖的是某一个版本,但是另一个项目依赖的是另一个版本,这样就会造成依赖冲突,而virtualenv就是解决这种情况的,virtualenv通过创建一个虚拟化的python运行环境,将我们所需的依赖安装进去的,不同项目之间相互不干扰一、安装virtualenvpip install virtualenv这样就安装好了pip,然后我们再使用pip安装virtualenv。二、使用virtualenv1)创建虚拟...…
-
检查网页编码
1、使用urllib模块的getparam方法:import urllib #import urllib.request (python3)urlBj = urllib.urlopen(‘http://www.baidu.com').info()print urlBj.getparam(‘charset’) #print(urlBj.getparam(‘charset’)) (python3)2、使用chardet模块:import chardetimport urlilb#imp...…
-
python读取文件
python 读取文件常用的三种方式:.read().readline().readlines()(一)read()方法:一次性读取完整的文件,对大文件不太适合,容易内存爆炸。file_object = open(filepath)print(file_object.read())file_object.close()(二) readline()方法:一行一行的读取文件,对内存占用比较好,每行末尾会有换行符输出。file_object = open(filepath)for i in f...…
-
pip命令
pip使用实例1、安装pip install <名称>2、卸载pip uninstall <名称>3、查看待更新包pip list --outdate4、列出所有已安装的包pip list5、升级pip install --upgrade <名称>6、查看某个包的详情pip show --files <名称>pip的帮助Usage: pip <command> [options] Commands: install ...…
-
wordpress的灵巧改动
一、Wordpress[分类目录]小工具显示没有文章的分类只需要将下列代码添加到该主题的functions.php文件即可:add_filter( 'widget_categories_args', 'wpdx_show_empty_cats' );function wpdx_show_empty_cats($cat_args) { $cat_args['hide_empty'] = 0; return $cat_args;}二、让WordPress支持使用中文用户名注册和登录...…