python3.x 学习笔记1

前言

即首博客主要介绍23栽设计模式的适用范围以及她们之利害,类图尽量采取了实例的类图来取代,没有找到的类图就因故了设计模式本身的结构图。

1.python模块:标准库和老三方库,第三正库需要下载安装
2.模块sys:
命令          功能

创建型模式

 

空泛工厂模式

提供一个创产品之接口来承担创建连锁或倚靠的对象,而未现实明确指定具体类

图片 1

优点:

空泛工厂模式将切实产品的创始延迟到具体工厂的子类中,这样以对象的创办封装起来,可以减少客户端与现实产品类之间的凭,从而使系统耦合度低,这样更便于后期的护卫与扩展。

缺点:

抽象工厂模式大为难支撑新路产品的变化。这是坐虚无工厂接口中已规定了足让创造的产品聚集,如果需要加加新产品,此时就非得去窜抽象工厂的接口,这样便事关到虚幻工厂类的与具有子类的更改,这样啊就算违反了“开发——封闭”原则。

适用场景:

①一个体系不该负让产品类实例如何吃创造、组合以及表达的细节。

②系面临来多给一个之产品族,而每次只有下中之一平下品族。

③属于与一个产品族的产品以当一块儿行使,这等同束缚必须在系统的计划性受到体现出。

④成品等结构稳定性,设计到位之后,不会见朝网受长新的出品等结构要去除已部分产品品结构。

sys.stdin        标准输入流
sys.stdout        标准输出流
sys.stderr              标准错误流

建造者模式

将一个扑朔迷离对象的构建和她的表示分离,使得一样的构建过程可以创建不同的象征。建造者模式之真面目是要是组装过程(用指挥者类进行包装,从而达成解耦的目的)和创具体产品解耦,使我们不用失去关爱每个组件是什么样组装的。

图片 2

建造者模式的兑现:

①在建造者模式遭遇,指挥者是一直与客户端打交道的,指挥者将客户端创建产品的要划分为对各个部件的盖请求,再将这些请求委派到实际建造者角色,具体建造者角色是形成具体产品的构建工作之,却未也客户所了解。

②建造者模式主要用于“分步骤来构建一个扑朔迷离的目标”,其中“分步骤”是一个稳住的结过程,而复杂对象的相继组成部分是不时转移之(也就是说电脑的里零件是常转移之,这里依的的变型而硬盘的轻重缓急变换了,CPU由单核变双核等)。

③出品无需抽象类,由于建造模式的始建出来的最终产品可能差距非常要命,所以不大可能提炼出一个浮泛产品类。

④于前面文章中介绍的抽象工厂模式解决了“系列产品”的需求转变,而建造者模式解决的凡
“产品有” 的消变更。

⑤是因为建造者隐藏了具体产品的组建过程,所以要是转移一个出品之中间表示,只需要重落实一个具体的建造者就足以了,从而能好好地回复产品组合组件的急需变动。

sys.argv[value]     
接收命令行的参数。例如,windows下之通令行cmd里面的参数。其中,argv[0]表示该公文本身。

工厂方法模式

概念一个用来创建对象的接口,让子类决定拿哪一个类实例化。工厂方法模式于一个类似的实例化延迟至该子类。工厂方法模式同时简称为工厂模式(Factory
Pattern),又可称作虚拟构造器模式(VirtualConstructor
Pattern)或多态工厂模式(Polymorphic FactoryPattern)。

图片 3

工厂方法模式之所以可以解决简单工厂的模式,是坐她的贯彻把具体产品之创造推迟至子类中,此时厂类不再承担所有产品的创,而止是深受出具体工厂必须实现的接口,这样工厂方法模式就是可允许系统非改工厂类逻辑的情景下来添加新产品,这样为就摆平了简要工厂模式面临欠缺。如果系统要补充加新产品常常,我们得采用多态性来就系统的扩张,对于肤浅工厂类和现实性工厂中的代码都未待开另外变更。

sys.version       查看该python的版本。
sys.platform        判断是什么操作系统
sys.exit(n)       若 n 为0,则正常退出;其他都是蛮退出,可以捕获

原型模式

之所以原型实例指定创建对象的种类,并且经过拷贝这些原型创建新的对象。

图片 4

优点:

①原型模式为客户隐藏了创办新实例的复杂

②原型模式允许动态增加或于少产品类。

③原型模式简化了实例的创造布局,工厂方法模式需有一个与产品类等级结构同样之阶段结构,而原型模式不需要这样。

④成品类似不欲先确定产品之号结构,因为原型模式适用于其他的流结构

缺点:

①每个接近必须安排一个克隆方法

②布置克隆方法需要对类的意义拓展通盘考虑,这对新的类不是殊麻烦,但对此已有的类非必然特别容易,特别当一个类援不支持串行化的间接对象,或者引用含有循环结构的早晚。

sys. path        查找模块所在的目录,以列表的样式展示出来

单例模式

确保有一个类就出一个实例,而且自行实例化并为周体系提供这实例,这个类称为单例类,它提供全局看的措施。

图片 5

优点:

①单例模式抱有一定之伸缩性,类自己来控制实例化进程,类即当变更实例化进程上生相应的紧缩性。

②由当系统内存中只存在一个目标,因此可省去系统资源,当用反复创建和销毁的靶子时单例模式的可以加强系统的性能。

③幸免对共享资源的系列占用。

缺点:

①休适用于变化之靶子,如果同样品种的靶子总是要以不同之用例场景发生变化,单例就会见唤起数据的一无是处,不可知保留彼此的状态。

②是因为单利模式遭遇没有抽象层,因此单例类的恢弘有特别老的紧。

③只是例类的天职过重,在定程度及背了“单一任务规范”。

适用场景:

单例模式只允许创建一个对象,因此节省内存,加快对象访问速度,因此对象要被公用的场地适合用,如多只模块使用及一个数据源连接对象等等。

3.os模块:
命令             功能
os.name             获取操作系统平台
os.getcwd()              获取现在的办事目录
os.listdir()            获取有目录下之兼具文件称
os.remove()        删除某个文件
os.system()              用来运作shell命令
os.path.existe()        检验给有之门路是否真地存在

结构型模式

os.path.isfile()        判断是否为文件;若是,返回值为真
os.path.isdir()         判断是否也文件夹;若是,返回值为真正
os.path.abspath(name)    获得绝对路径
os.path.splitext()       分离文件称和扩大名
os.path.split()        把一个途径拆分为目录+文件称之款式
os.path.join(path,name)    连接目录及公事称或目录
os.path.basename(path)  返回文件称
os.path.dirname(path)   返回文件路径
os.popen(“dir”)          返回当前目录,显示的凡内存地址
os.popen(“dir”).read()    返回内存地址的内容

适配器模式

拿一个接口转换成客户要之外一个接口,使接口不般配的那些看似可同干活,其变化叫吧包装器(Wrapper)。适配器模式既好看作类结构型模式,也足以看做靶子结构型模式。

图片 6

优点:

①足当匪改动原有代码的基础及来复用现有类,很好地符合
“开闭原则”(这点是少数种实现方式还拥有的)

②下 “对象成”的不二法门,更可松耦合。

缺点:

①使得重定义Adaptee的作为比较困难,这就是需生成Adaptee的子类并且使Adapter引用这个子类而无是引用Adaptee本身。

适用场景:

①网要复用现有类,而该类的接口不切合系统的需求

②纪念使白手起家一个可重复使用的类似,用于和部分彼此之间没有最非常关系的组成部分近乎,包括一些恐怕当明天推荐的切近并坐班。

③对目标适配器模式,在筹划里用转移多独既发子类的接口,如果用类的适配器模式,就假设针对各个一个子类做一个适配器,而及时不太实在。

 

桥接模式

以抽象部分与它们的兑现有分离,使其还可以独自地扭转。它是千篇一律种对象结构型模式,又曰柄体(Handle
and Body)模式要接口(Interface)模式。

图片 7

优点:

①管抽象接口和那落实解耦。

②浮泛和实现好独自扩展,不会见潜移默化至对方。

③贯彻细节对客户透明,对用于隐藏了切实可行贯彻细节。

缺点:

加了系统的复杂度

以状况:

①如果一个体系要在构件的抽象化角色跟具体化角色里面添加更多的油滑,避免在少只层次中成立静态的关联。

②计划要求落实成为角色的外变更不该影响客户端,或者实现成为角色的变动对客户端是一点一滴透明底。

③欲跨越多单阳台的图形和窗口系统及。

④一个类似是个别个单身变化的维度,且少单维度都急需开展扩张。

4.数据类型:整型(int)、浮点型(float)、复数(complex)、字符串、布尔值

结模式

重组多只目标形成树形结构为表示有“整体—部分”关系之层次结构。组合模式对单个对象(即叶子对象)和重组对象(即容器对象)的运有一致性,组合模式同时可叫“整体—部分”(Part-Whole)模式,它是一模一样种对象结构型模式。

图片 8

优点:

①结合模式让客户端代码可以一样地拍卖对象及目标容器,无需关系处理的单个对象,还是结合的靶子容器。

②以”客户代码和复杂的靶子容器结构“解耦。

③可以重复易于地于组合对象中在新的预制构件。

缺点:

令设计更扑朔迷离。客户端需要花更多日子理清类之间的层次关系。(这个是几所有设计模式所面临的题材)。

于偏下情形下应当考虑使用组合模式:

①索要代表一个对象整体还是一些的层次结构。

②巴用户忽略组合对象同单个对象的差,用户用合地采取组合结构面临的有目标。

5.数量运算:https://www.cnblogs.com/topspeedking/p/6403513.html

装点模式

动态地为一个对象多部分格外的天职,就加对象功能来说,装饰模式比生成子类实现更为灵活。装饰模式是同一种植对象结构型模式。

图片 9

优点:

①装修这模式与后续的目的都是扩大对象的作用,但装饰者模式于持续又灵敏

②通过利用不同的切切实实装饰类以及这些类似的排列组合,设计师可以创造出不少不同行为的结合

③装饰者模式来异常好地而扩展性

缺点:

①装饰者模式会招规划受到起过剩略目标,如果过于使用,会给程序变的再复杂。并且还多之目标会是的错误变得紧巴巴,特别是这些目标看上去都蛮像。

用状况:

①内需扩大一个类似的作用或吃一个类增加附加责任。

②要动态地受一个对象多效益,这些作用可以重复动态地收回。

③得充实由片基本功能的排列组合而产生的怪大方底效果

6.老三首运算:
result = 值1 if 条件 else 值2
若是基准为真正:result = 值1
倘条件也假;result = 值2

外观模式

为子系统被的平组接口提供一个联结之输入。外观模式定义了一个高层接口,这个接口使得这无异支行系越来越便于采取。

图片 10

图片 11

优点:

①外观模式对客户挡了分层系组件,从而简化了接口,减少了客户处理的对象数目并使子系统的施用进一步简明。

②外观模式实现了分系和客户内的松耦合关系,而子系统间的成效组件是紧耦合的。松耦合使得子系统的零部件变化不见面影响至它的客户。

缺点:

①如果增加新的子系统可能得改外观类或客户端的源代码,这样尽管失了”开——闭原则“(不了就点为是不可逆转)。

采用状况:

①异一个复杂的子系统提供一个简约的接口

②领取供子系统的独立性

③每当层次化结构中,可以运用外观模式定义系统面临各一样叠的入口。其中老三层架构就是如此的一个例证。

7.Python 3中bytes/string的区别:
https://www.cnblogs.com/abclife/p/7445222.html

享元模式

下共享技术中的支撑大气细粒度的对象。

图片 12

享元模式亮点就是在于它能够极大的降低外存中对象的多少;而为完成即同一步也牵动了它们的瑕疵:它使得系统逻辑复杂化,而且当肯定程度达外蕴状态影响了系统的进度。

用状况:

①一个系统被起大量的对象,这些目标吃大量之内存,这些目标被的状态大部分且可给外部化。

②这些目标足以按照中状态分成多底组,当把外部对象由目标吃除去时,每一个组都可以单独用一个目标代替

③软件系统不借助这些目标的身份,

8.Python3挨byte和string之间各种编码转换:
http://blog.csdn.net/htdeyanlei/article/details/50866307

代理模式

叫某一个目标提供一个摄要占用位符,并由代理对象来支配对原先对象的访。

图片 13

优点:

①代理模式会以调用用于真正为调用的目标隔离,在早晚水准达退了网的耦合度;

②摄对象在客户端以及对象对象期间由及一个中介的打算,这样好起至对目标靶的护卫。代理对象好以针对目标对象发出请求之前进行一个外加的操作,例如权限检查等。

缺点:

①是因为当客户端和真正主题中多了一个代理对象,所以会造成请求的处理速度变慢

②贯彻代理类也用格外的做事,从而增加了网的实现复杂度。

运用状况:

①长距离代理,也就算是吗一个靶在不同的地点空间提供部分代表。这样好隐蔽一个目标在叫不同地点空间的谜底。

②心虚拟代理,是根据需要创造开销很酷之靶子。通过其来存放实例化需要格外丰富世间的真实性对象。

③安代理,用来支配真是对象看时之权能。

④智能指引,是恃当调用真实的对象时,代理处理另外一些事。

9.decode解码 encode编码

10.列表(list):

list.append(x)
在列表的尾部添加一个宗,等价于 a[len(a):] = [x]。

list.extend(L)
以加以的列表L接到当前列表后面,等价于 a[len(a):] = L。

list.insert(i, x)
在加的职位 i 前安插项,例如:a.insert(0, x) 会在列表的脑袋插入,而
a.insert(len(a), x) 则等价于 a.append(x)。

list.remove(x)
移除列表中首先单价值吗 x 的起,没有底话语会有一个破绽百出。

list.pop([i])
删除列表给定位置的宗,并回到她。如果无指定索引,a.pop()移除并返回列表最后一件。(方括号表示可选)

list.clear()
抹列表中的装有项,相当给 del a[:]。

list.index(x)
返回列表中率先独价值也 x 的项之目。如果没匹配的起, 则产生一个错。

list.count(x)
回去列表中 x 出现的次数。

list.sort()
就地就列表排序。

list.reverse()
就地就列表项的扭动。

list.copy()
回到列表的一个浅拷贝,相当给a[:]。