Tonychow

在学,在前行,be a fool

关于 Python Iterator 协议的一点思考

| Comments

Python 中有好几种容器或者序列类型:list tuple dict set str,对于这些类型中的内容,往往需要一种方式去遍历获取它们来进行操作。所以 Python 提供了迭代器的类型来对这些类型的内容进行迭代遍历,迭代类型新增于 Python 2.2。

迭代器类型指的是遵循迭代器协议的类型,对于 Python2.x 版本来说就是实现了 __iter__next 函数的对象类型。如果一个对象实现了迭代器协议,则可以用 for 语句遍历这个对象的内容。其中 __iter__ 函数返回一个迭代器对象,而 next 函数则需要返回容器的下一个内容,如果没有下一个则抛出 StopIteration 异常,这个异常在 for ... in 语句中将会被捕获然后结束迭代。迭代器协议详细内容可以查看 PEP234 。Python3.x 将 next 函数改成了 __next__ 函数,以和其他内置的函数保持一致的双下划线风格。

Python 核心编程读书笔记 Day7

| Comments

今天把剩下的 20-23 章的内容阅读完毕了,这几章也是与 Python 相关的高级内容,包括 Web 编程,数据库接口和 Python 扩展等内容,下面稍微总结下每章的内容。

第二十章:Web 编程

这一章所谓的 Web 编程内容实际上讲的是利用 urllib 模块进行的 Web 相关的编程,同时也讲到了利用 cgi 模块进行的 原始的 cgi 编程。从内容来说的话主要介绍了 urllib 和 cgi 模块的一些使用。cgi 是比较早期的服务器处理客户端的 请求的方式,目前的 Python Web 编程已经不使用这种技术了。但是总的来说,过去和现在的 Web 编程总是接收请求,然后返回数据给客户端的模式。此外,鉴于 HTTP 协议的无状态性质,可以利用 cookie 的方式来在客户端和服务器端进行一定的状态判断。

Python 核心编程读书笔记 Day6

| Comments

今天阅读了 15-19 章的内容,前面的是 Python 中的关键重要内容,而这之后的几章内容都是 Python 的一些高级内容。所谓高级指的是这些章节描述了一些与 Python 相关的比较高的层面的内容,比如正则表达式,网络编程等等内容,下面继续总结今天的阅读笔记。

第十五章:正则表达式

在文本处理和数据处理中,正则表达式提供了一种模式匹配,搜索文本的方式。正则表达式在很多语言中都被支持,而同样 Python 也提供了对正则表达式支持的模块 re。本章的内容就是 Python 的正则表达式模块,下面是要点:

1.正则表达式是一个由含有文本和特别字符组成的字符串,通过正则表达式可以描述想要匹配的内容;

2.re1|re2 表示匹配 re1 或者 re2;

3.. 表示匹配换行符 ‘\n’ 之外的其他任何字符;

4.^ 表示匹配字符的开始,在 [] 内表示否定;

5.$ 表示匹配字符的结尾;

Python 核心编程读书笔记 Day5

| Comments

今天的内容是 Python 中的面向对象和 Python 的执行环境。Python 支持 OOP,虽然很多情况下 Python 直接写函数就可 可以解决大部分的问题,但是 OOP 也是 Python 中的一个重要内容。下面继续总结笔记。

第十三章:面向对象编程

本章的内容是 Python 的面向对象编程,具体来说,讲述了 Python 中关于类和 OOP 的具体内容,包括继承,类的方法等 内容,同时也涉及了 Python 中的特殊方法等类的内容。下面是要点:

1.Python 中的实例方法都存在着第一个参数为 self 指示这个实例本身;

2.Python 中的类方法存在着第一个参数为 cls 通常指示这个类本身;

3.Python 中的 __new__(cls,...) 方法才是构建实例的方法,__init__(self,...) 方法是初始化实例的方法;

4.Python 中的子类的构造方法会覆盖父类的构造方法,子类不存在构造方法才会调用父类的构造方法;

5.Python 不支持纯虚函数或者抽象方法;

6.类属性绑定到类的 __dict__ 中,实例属性绑定到实例的 __dict__ 中;

7.如果实例中不存在一个和类属性同名的实例属性,则通过实例访问到的是类的属性,如果进行修改,则会在实例中保存 一个同名的实例属性存放在实例的 __dict__ 中,这个实例属性会屏蔽同名的类属性,注意是屏蔽不是覆盖;

8.__del__ 是实例的析构方法,只有在真正需要对该实例进行释放内存的时候才会调用,在 Python 中也就是意味着该 实例的引用计数为 0,进行垃圾回收操作;

Python 核心编程读书笔记 Day4

| Comments

今天的主要阅读了 10-12 章的内容,这三章内容主要涉及异常,函数及模块,这几个模块 也是 Python 中比较重要的基本内容,也有相对于其他语言的独特之处,下面继续总结今 天的阅读笔记。

第十章:错误和异常

本章关注的内容是异常。异常在其他语言中也有实现,一般来说,异常处理给程序员提供 了一种在错误发生的时候对错误进行处理的方式。与其出现错误的时候,直接终止程序的 执行,不如对错误进行处理之后让程序继续执行。下面是本章要点:

1.错误引发异常的时候会打断正常的程序处理流程;

2.Python 异常的检测可以通过 try 语句进行,通常有 try-excetpt,try-finally模式;

3.try 语句可以带多个 except ,可以处理多种异常,也可以直接多个异常放在一个元组 中;

4.except Exception[, reason];

5.try-except 同样也支持 else 子句,不发生异常则执行 else 子句的语句;

6.实现了 __enter___exit__ 方法的类可以利用 with 语句;

7.__exit__ 具有三个参数,exc_type, exc_value, exc_traceback;