一 OOP函数
与C++和Java同样,Python一样具备OOP设计。编码
过程式:从前到后,一条一条,机器能接受的顺序性方式;方式大概为“首先你应该作什么,第二应该作什么,高级点的作点假设若是遇到什么状况要作什么,或者一件事情要作多少多少遍,… …,”spa
OOP式:从“类与对象”方式来抽象和理解世界。例如首先物体(Object)大概能够分为“生物”与“非生物”,“生物”又能分为“人、动物、植物”等,“人”又分为“男人,女人”等。。。大天然在世界之巅,不断分类设定。相似于“族谱”,上下之间能“继承”。设计
类与对象。类是抽象的,是一群的概述,对象是具体的,独立的,例如我存在一个独立的人。对象拥有所在类的属性和方法,一样拥有属于本身对象的属性(方法)。指针
现实世界中,类拥有属性(attribute)和行为(action);抽象数据中,类拥有数据(data)和方法(method)。类之间,存在继承(inheritance)与改良,类与对象之间,存在实例化。在实例化以后,对象可以在继承的类成员以外,增长属于本身的数据成员。对象
二 Python OOP继承
末 Python 中的坑内存
Python 很强大,坑也很多,一个一个填吧。it
一 Python 处理中文及编码方式io
Python3.0以前,因为编码的缘故,处理中文夹杂状况,十分痛苦。要想完全让它不是问题,第一,理解编码方式之间转换;第二,几个实际例子在手。
二 Python基础语法
1. 浅拷贝赋值,传值与传地址调用
首先看两个例子,关于一个函数参数为int和list两种类型时的不一样操做,以增长++一个值为例。
# 传值value参数a = 1def change_integer(a):
a = a + 1return a
# 传地址address参数b = [1,2,3]def change_list(b):
b[0] = b[0] + 1return b
# test valueprint change_integer(a)
print 'a = ',a
print change_list(b)
print 'b[0] = ',b[0]
#Result:>a = 1>b[0] = 2
第一个integer例子中,将一个int类型变量传递给函数,原整型变量a不发生变化。
第二个list例子中,将一个list类型变量传递给函数,原listb会发生变化。
缘由在于,对于基本数据类型(例如int),函数会在内存中复制一个新的变量,从而不影响原来变量,这叫“值传递”;
对于list来讲,并不属于基本变量,函数传递的是一个指针,指向序列在内存中的地址,从而影响原来的值,称为“指针传递”。
同理,对于matrix或者array类型的数据,也属于非基本类型,所以array_a = array_b这样行为,array_b作操做时一样会影响到array_a,特别注意!!