python cookbook第三版学习笔记 一】的更多相关文章

类和对象: 我们经常会对打印一个对象来得到对象的某些信息. class pair:     def __init__(self,x,y):         self.x=x         self.y=y if __name__=='__main__':     p=pair(3,4)     print p E:\python2.7.11\python.exe E:/py_prj/python_cookbook/chapter8.py <__main__.pair instance at 0…
假如我们有一个列表 items=[1,2,3].我们要遍历这个列表我们会用下面的方式 For i in items:   Print i 首先介绍几个概念:容器,可迭代对象,迭代器 容器是一种存储数据的数据结构,容器将所有数据保存在内存中,典型的容器有列表,集合,字典,字符数组等.如items就是一个列表容器.   可迭代对象:这个对象是否可迭代.如items也是一个可迭代对象.简单来说如果可以用for循环的对象都称为可迭代对象.如果要判断是否是一个可迭代的对象.可以用print isinsta…
数据结构 假设有M个元素的列表,需要从中分解出N个对象,N<M,这会导致分解的值过多的异常.如下: record=['zhf','zhf@163.com','775-555-1212','847-555-1212'] name,email,=record E:\python2.7.11\python.exe E:/py_prj/python_cookbook.py Traceback (most recent call last): File "E:/py_prj/python_cookb…
__get__以及__set__:假设T是一个类,t是他的实例,d是它的一个描述器属性.读取属性的时候T.d返回的是d.__get__(None,T),t.d返回的是d.__get__(t,T).说法比较绕,我们来看一个实例: class Descriptor(object):     def __get__(self, instance, owner):         return 'get',self,instance,owner class T(object):     d=Descri…
在开始本节之前,首先介绍下偏函数partial.首先借助help来看下partial的定义 首先来说下第一行解释的意思: partial 一共有三个部分: (1)第一部分也就是第一个参数,是一个函数,这个函数可以是你定义的,也可以是Python内置函数 (2)第二部分是一个可变参数,*args,比如内置函数max的参数就是一个可变参数,max(1,2,3,4,5)=5 (3)第三部分是一个关键字参数,比如内置函数int的第二个参数就是命名关键字参数,默认base=10,表示int转换时默认是10…
假设一个工程中有多个类,每个类都通过__init__来初始化参数.但是可能有很多高度重复且样式相同的__init__.为了减少代码.我们可以将初始化数据结构的步骤归纳到一个单独的__init__函数中,并将其定义在一个公共的基类中.示例如下: class structre(): fileds=[] def __init__(self,*args): if len(args) != len(self.fileds): raise TypeError('Expected {} arguments'.…
8.5 私有属性: 在python中,如果想将私有数据封装到类的实例上,有两种方法:1 单下划线.2 双下划线 1 单下划线一般认为是内部实现,但是如果想从外部访问的话也是可以的 2 双下划线是则无法通过外部访问且不能被继承覆盖 来看下面的这个例子: class B: def __init__(self): self.__private=0 def __private_method(self): print("__private method") def public_method(s…
CSV文件读取: Csv文件格式如下:分别有2行三列. 访问代码如下: f=open(r'E:\py_prj\test.csv','rb') f_csv=csv.reader(f) for f in f_csv:     print f 在这里f是一个元组,为了访问某个字段,需要用索引来访问对应的值,如f[0]访问的是first,f[1]访问的是second,f[2]访问的是third. 用列索引的方式很难记住.一不留神就会搞错.可以考虑用对元组命名的方式 这里介绍namedtuple的方法.…
__get__以及__set__:假设T是一个类,t是他的实例,d是它的一个描述器属性.读取属性的时候T.d返回的是d.__get__(None,T),t.d返回的是d.__get__(t,T).说法比较绕,我们来看一个实例: class Descriptor(object):     def __get__(self, instance, owner):         return 'get',self,instance,owner class T(object):     d=Descri…
在子类中调用父类的方法,可以下面的A.spam(self)的方法. class A(object):     def spam(self):         print 'A.spam' class B(A):     def spam(self):         print 'B.spam'         A.spam(self) if __name__=='__main__':     b=B()     b.spam() 但是上面的代码有一个问题,如果B的父类变更了,而且有很多子类的父…