Python 核心编程读书笔记 Day7

Posted on 五 18 七月 2014 in readings • 1 min read

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

第二十章:Web 编程

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

第二十一章:数据库编程

无论是什么形式的应用程序,总会涉及到数据持久化的内容,而相比于普通的文件持久化或者 Python 提供的其他持久化的方式模块,利用数据库进行数据的持久化更适合复杂的数据和大型的系统。这章主要讲了 Python 利用数据库进行数据的持久化的内容,其中的数据库在本章主要指关系型数据库。Python 关于数据库这方面的内容,有一点让我觉得很牛逼的就是,它统一了一个数据库接口,也就是 PEP249 中规定的 Python 的 DB-API。这个规范规定了 Python 在数据库操作方面的一些通用的做法,任何依照这个规定实现的不同数据库的接口库都会表现出一致的操作方式。这样就大大地减少了程序员操作不同数据库的差异程度。虽然不是所有的接口都完全遵守,但是大体上是一致的。下面有几点:

1.connect 方法连接数据库;

2.close 方法关闭数据库连接;

3.commit 方法提交当前事务,对于不支持事务或者默认为立即执行的数据库来说,这个方法什么也不做;

4.rollback 方法取消当前事务,回滚到之前的状态;

5.cursor 获得一个游标对象,进行数据库的各种操作;

6.游标对象具有 executeexecutemany 方法执行 SQL 查询或者操作;

7.游标对象具有 fetchonefetchmanyfetchall 方法获取查询的结果;

8.ORM 框架是指对象关系映射框架,可以将一个对象映射为数据库中的数据内容,向使用者屏蔽了底层的数据库操作;

第二十二章:扩展 Python

这里讲到的扩展 Python 主要讲的是针对 CPython 的扩展。因为 CPython 的实现语言是 C ,所以我们也可以根据一定的方式,编写 C 语言程序,扩展 CPython 的功能。下面是要点:

1.扩展 CPython 的程序需要包含 Python.h 头文件;

2.扩展模块中的函数如果想要在 Python 中被调用,需要进行函数的包装,包装函数的模式为 PyObject * Module_func();

3.在 Python 中调用扩展模块的函数时,传入的是 Python 的数据类型,所以需要用 PyArg_Parse* 系列函数将参数转换为 C 的数据类型;

4.同样地,扩展模块的函数返回的是 C 的数据类型,也需要将这个返回结果通过 Py_BuildValue 进行类型的转换然后再返回;

5.扩展模块的 C 源码编写好后可以通过 distutils 模块对其进行编译和添加进 Python 的模块目录中;

6.注意在扩展模块中如果想利用 Python 的对象,需要考虑引用计数的问题;

7.由于扩展模块的代码最终也会在 Python 解释器中执行,所以同样也会受到 GIL 的影响;

第二十三章:其他话题

本章的内容是一些杂七杂八的内容,比如利用 Python 编写一个利用其他在线的 Web 服务的脚本程序,利用 COM 接口调用 win 平台的 office 软件还有发送邮件等内容。最后还提到了Jython 的内容,利用 Swing 进行 GUI 开发。

最终总结

花了大概一周的时间,看完了《Python 核心编程这本书》。这本书从内容来说,还是不错的,一些 Python 基本的东西都有涉及,也讲得很细,也有些经验之谈的东西也值得学习。虽然后面的章节有点凑字数的嫌疑,考虑是到面向的是 Python2.5,而现在 Python 的版本号已经跑到了 2.7 了,所以也能原谅。但是,中文版的质量真心的差强人意。不说遍布全书的各种 typo 问题(甚至连标题也出现 typo),就一点来说,对于 Python 这种这么注重缩进的语言来说,书里的各种代码缩进乱七八糟真的好意思么。当然,考虑到这本中文版出书背后的各种八卦事情,似乎这种质量也是可以理解的。

无论如何,看完这本书之后的确对 Python 有了更多的了解,或者说对 Python 的理解更加全面了,所以还是受益匪浅的。