《Python编程金典》读书笔记.docx

上传人:b****5 文档编号:8398256 上传时间:2023-01-31 格式:DOCX 页数:56 大小:60.32KB
下载 相关 举报
《Python编程金典》读书笔记.docx_第1页
第1页 / 共56页
《Python编程金典》读书笔记.docx_第2页
第2页 / 共56页
《Python编程金典》读书笔记.docx_第3页
第3页 / 共56页
《Python编程金典》读书笔记.docx_第4页
第4页 / 共56页
《Python编程金典》读书笔记.docx_第5页
第5页 / 共56页
点击查看更多>>
下载资源
资源描述

《Python编程金典》读书笔记.docx

《《Python编程金典》读书笔记.docx》由会员分享,可在线阅读,更多相关《《Python编程金典》读书笔记.docx(56页珍藏版)》请在冰豆网上搜索。

《Python编程金典》读书笔记.docx

《Python编程金典》读书笔记

《Python编程金典》读书笔记

整理:

Jimsof肥肥世家

  

        

第一次发布时间:

2004年5月26日

TableofContents

1.绪论

2.python编程概述

2.1.知识点

2.2.良好的编程习惯

2.3.常见编程错误

2.4.测试和调试提示

2.5.移植性提示

3.控制流程

3.1.知识点

3.2.良好的编程习惯

3.3.常见编程错误

3.4.移植性提示

3.5.软件工程知识

4.函数

4.1.知识点

4.2.良好的编程习惯

4.3.常见编程错误

4.4.移植性提示

4.5.软件工程知识

4.6.性能提示

5.列表、元组和字典

5.1.知识点

6.公共网关接口(CGI)入门

6.1.知识点

7.基于面向对象的编程

7.1.知识点

7.2.良好的编程习惯

7.3.常见编程错误

7.4.测试和调试提示

7.5.软件工程知识

7.6.性能提示

8.自定义类

8.1.知识点

8.2.良好的编程习惯

8.3.常见编程错误

8.4.软件工程知识

8.5.性能提示

9.面向对象编程:

继承

9.1.知识点

9.2.常见编程错误

9.3.软件工程知识

9.4.性能提示

10.图形用户界面组件

(一)

10.1.知识点

10.2.良好的编程习惯

10.3.常见编程错误

10.4.界面知识

11.图形用户界面组件

(二)

11.1.知识点

11.2.测试和调试提示

11.3.界面知识

12.异常处理

12.1.知识点

12.2.良好的编程习惯

12.3.常见编程错误

12.4.测试和调试提示

12.5.软件工程知识

12.6.性能提示

13.字符串处理和正则表达式

13.1.知识点

13.2.良好的编程习惯

13.3.性能提示

14.文件处理和序列化

14.1.知识点

14.2.良好编程习惯

14.3.常见编程错误

14.4.性能提示

15.可扩展标记语言(XML)

15.1.知识点

15.2.常见编程错误

15.3.移植性提示

15.4.软件工程知识

15.5.性能提示

15.6.示例

16.Python的XML处理

16.1.知识点

16.2.良好编程习惯

16.3.示例

17.数据库应用程序编程接口(DB-API)

17.1.知识点

17.2.良好的编程习惯

17.3.常见编程错误

17.4.移植性提示

18.进程管理

18.1.知识点

18.2.良好的编程习惯

18.3.移植性提示

19.多线程处理

19.1.知识点

19.2.性能提示

19.3.常见编程错误

19.4.测试和调试提示

19.5.性能提示

20.联网

20.1.知识点

20.2.常见编程错误

20.3.软件工程知识

20.4.性能提示

ListofExamples

15.1.sort.xml

15.2.sorting.xsl

16.1.动态生成XML内容

16.2.一个XML论坛的例子

Chapter 1. 绪论

Chapter 2. python编程概述

TableofContents

2.1.知识点

2.2.良好的编程习惯

2.3.常见编程错误

2.4.测试和调试提示

2.5.移植性提示

2.1. 知识点

1.raw_input是python的内建函数,要求用户输入,输入结果是一个字符串。

example:

test=raw_input("pleaseinputanumber:

\n")

2.python是一种区分大小写的语言。

3.id函数返回变量内存位置,type函数返回变量类型。

4.在python2.2前,只提供一种除法运算符(/),运算的行为(即是Floor整数除法,还是True浮点除法)是由操作数的类型来决定的。

如果操作数全是整数,就执行Floor除法。

如一个或两个操作数是浮点数,就执行True浮点除法。

5.在python2.2后的所有版本中,设计者决定去除(/)的随意性。

决定采用两个操作符,其中/执行True除法;//执行Floor除法。

但这样会造成旧版本的程序出错,所以设计者采取了一种折衷的办法。

如果不先声明,python还是使用旧的/操作符。

如果要使用新的方法就要进行声明,声明方式是:

from__future__importdivision,这样就可以用/和//了。

6.格式化字符串print"testis%d"%integer1,表示方法和c语言差不多。

7.如果语句太长需要用到“\”这个续行符。

8.在过程式编程中,程序员把重点放在写函数上,用于执行一些任务的行动被组合成函数,不同的函数进一步进行组合,即构成程序。

9.采用面向对象编程,程序员的工作主要放在创建自已的“类”上。

每个类包含数据及一系列函数。

类的数据组件被称为数据成员或属性,类的函数组件则称为方法。

10.重用,重用,再重用是影响软件开发三大因素。

就如影响房地产价格三大因素是地段,地段,不是地段。

2.2. 良好的编程习惯

1.在程序中使用丰富的注释。

注释有助于其他程序员理解程序,有助于程序员调试,并列出有用的信息。

以后修改或更新代码时,注释还有助于你理解自已当初编写的程序。

2.每个程序都应以一条注释开始,描述该程序的用途。

3.加一些空行来增强程序的可读性。

4.有意义的变量名可改善程序的“自编档能力”,也就是说,只需读一读程序,就能轻松理解它。

5.避免标识符以下划线和双下划线开头,因为python解释器可能保留了那些名称,供内部使用。

6.在二元运算符两端添加一个空格。

这样可以突出运算符,增强程序的可读性。

7.和代数一样,可在表达式中添加原本不需要的括号,使其更清晰。

2.3. 常见编程错误

1.试图访问一个未赋值的变量,会产生运行时错误。

2.不要把“==”相等和“=”赋值运算符操混了。

赋值符号“=”不能出现在if等的条件语句中。

3.忘记在if结构中插入冒号是语法错误。

ifa==b:

...

4.不要忘记了缩进格式,否则会出现语法错误。

由于tab键在不同系统中的长度不同,所以建议将3个空格定为一个缩进级别。

如果在一个程序中缩进量不同,会造成语法错误。

2.4. 测试和调试提示

1.使用-i选项(python-itest.py)。

会导致编译器在执行了文件中的语句后进行交互模式,这非常适用于调试程序。

2.为了避免难以察觉的错误,务必在程序中采用统一和正确的缩进。

2.5. 移植性提示

1.预计在python3.0中,运算符/只执行True除法。

3.0发布后,程序需更新自已的程序。

Chapter 3. 控制流程

TableofContents

3.1.知识点

3.2.良好的编程习惯

3.3.常见编程错误

3.4.移植性提示

3.5.软件工程知识

3.1. 知识点

1.所谓“算法”,是指解决一个问题的“过程”,它包含两个含义,1是要采取的行动,2是采取这些行动的顺序。

2.研究表明,只要三种结构就可以写出所有程序,这三种结构是:

顺序结构,选择结构以及重复结构。

3.算法求精,就是把算法用伪代码逐层分解成可以用python程序实现的过程。

4.+=符号将符号右边的表达式的值加到左边的变量上,再将结果存回左边的变量。

变量要先初始化,如果没有会出错。

5.range(0,10,1)代表一个从0到9共10个元素的序列,自增量为1。

6.与非结构化程序相比,结构化编程所生成的程序要容量理解得多,所以更易测试、调试和修改,而且不易出错。

3.2. 良好的编程习惯

1.初始化所有变量。

2.在信号值控制的循环中,当提示输入时,应明确指明信息值是哪一个。

3.当执行除法运算时,如除数可能为零,请务必明确检测。

关在程序中进行相应处理,不要任由错误发生。

4.在每个控制结构前后各留一个空行,将其同程序的其余部份区分开。

5.嵌套级别过多,会使程序难以理解,通常应将嵌套控制在3级以内。

6.避免在for循环主体更改控制变量的值,这有可能导致不易发现的逻辑错误。

3.3. 常见编程错误

1.将所有浮点数假设为是精确的,会导致不正确的结果。

浮点数在大多数计算机中只是近似数。

2.在赋值符号左边的变量初始化之前试图使用增量赋值是错误的。

3.如果忘记range函数返回的序列的第一个值是0,可以导致差1错误。

3.4. 移植性提示

1.python2.0开始引入增量赋值符号,在老版本中python中使用增量赋值符号是语法错误。

3.5. 软件工程知识

1.经验表明,用计算机解决问题最有效的办法是为解决方案开发一种算法。

一旦开发出正确的算法,通常能根据它方便地生成一个能实际工作的python程序。

2.在从事大型的、复杂的项目时,一定要开发算法。

这样才可能不会导致严重错误,从而推迟项目进度。

Chapter 4. 函数

TableofContents

4.1.知识点

4.2.良好的编程习惯

4.3.常见编程错误

4.4.移植性提示

4.5.软件工程知识

4.6.性能提示

4.1. 知识点

1.python的程序组件包括函数、类、模块和包。

“模块”是包含函数和类定义的文件。

许多模块可以组合成一个集合,称为“包”。

2.模块位于python安装目录的库目录下。

在unix/linux下,是/usr/lib/python2.2或/usr/local/lib/python2.2,在windows上,则是\python\lib。

3.函数定义中创建的所有变量都是“局部变量”--只存在于声明它们的函数中。

4.python定义了3个命名空间,分别是局部(local),全局(global)和内建(built-in)。

程序访问标识符的值时,python会按特定顺序搜索命名空间(即按局部,全局和内建顺序)。

5.importrandomasrandomModule指定引用名。

现在可以用randomModule来引用random中的函数。

6.重复使用重复的结构,如for和while;递归使用选择结构,如if和if/else。

之间的差别是,重复采用一个重复结构,而递归采用重复的函数调用。

两者都要进行终止测试:

重复会在循环继续条件为false时终止;递归在识别出基本条件是终止。

由计数器控制的重复和递归都是逐渐终止:

重复会不断改变一个计数器,直到计数器的值使循环继续条件变为false;递归则不断对原始问题进行简化,直到抵达基本条件。

重复和递归都可无休止地进行:

如果循环继续检测永远都不能变成false,会发生无限循环;如果递归调用永远不能将问题简化成基本条件,会发生无穷递归。

7.函数的默认参数设置需在def语句中定义。

如:

deftest(aa=1,bb=2,cc=3):

xxx。

8.关键字参数可以不按位置顺序出现在函数调用中。

用keyword=value方式就可以了。

4.2. 良好的编程习惯

1.尽快熟悉核心python模块提供的函数和类集合。

2.避免变量名遮蔽外层作用域中的名称。

为此,要注意避免标识符与内建命名空间中的标识符同名,并避免在程序中使用重复的标识符。

3.使用默认参数可简化函数调用的编写,但有的程序员认为,显式指定所有参数会使程序更易读。

4.3. 常见编程错误

1.用局部命名空间中的一个标识符遮蔽模块或内建命名空间中的一个标识符,可能引起逻辑错误。

2.默认参数必须全部靠右。

省略非靠右的参数是语法错误。

4.4. 移植性提示

1.使用核心python模块中的函数,通常可使用程序更易移植。

4.5. 软件工程知识

1.避免重复别人的劳动。

尽量使用标准库模块函数,不要写新函数。

这样可加快程序开发进度,并增强可靠性。

因为你所使用的是经良好设计和测试的代码。

2.每个函数都应该只限执行单一的、良好定义的任务,函数名应清楚地描述那个任务。

3.如果实在想不出能准确表达函数作用的名称,就表明函数可能执行了太多的分散任务,通常,最好把这种函数分解成多个更小的函数。

4.程序应写为若干个小函数的集合。

这样使程序更易编写、调试、维护和修改。

5.如函数需要大量的参数,表明它执行的任务可能过多。

请考虑将函数分解成更小的函数,令其执行单独的任务。

函数的def语句尽可能不超过一行。

6.采用递归方式能解决的任何问题也可采用重复方式(非递归方式)解决。

如果递归方式能够更自然地反映问题,并使程序易于理解和调试,通常应该首选递归方式。

通常,只需几行代码就可完成一个递归方式,重复方式则相反,它需要大量的代码来实现。

选择递归的另一个原因是,重复方案也许不是很直观。

7.采用清晰的、层次清楚的方式对程序进行“函数化”,有助于保证良好的软件工程,但性能上要付出一定代价。

4.6. 性能提示

1.不要试图改写现成的模块函数使其更高效,因为这些函数已非常完美了。

2.一般不要编写会造成调用次数成指数级增加的“斐波拉契”式递归程序。

3.避免对性能要求高的时候使用递归。

递归调用既费时、又耗内存。

4.一个由多个函数构成的程序,与一个没有任何函数的一体式程序相比,会产生大量的函数调用,这些函数调用会占用大量的处理器时间和内存。

但另一方面,一体式程序的编程、测试、调试和维护都比较复杂。

因此对程序进行函数化时要综合考虑。

保证能兼顾良好的性能和软件工程。

Chapter 5. 列表、元组和字典

TableofContents

5.1.知识点

5.1. 知识点

1.Python支持3种基本序列数据类型:

字符串(string),列表(list)和元组(tuple)。

2.“映射”在其它语言中称为关联数据或“哈希”,是用于存储“键-值”对的数据结构。

python支持一种映射数据类型,字典。

3.创建序列:

aString="";aList=[];aTuple=()。

列表是可变序列,字符串和元组是不可序列。

Chapter 6. 公共网关接口(CGI)入门

TableofContents

6.1.知识点

6.1. 知识点

1.CGI可用于几乎任何程序语言或脚本语言,比如C,PERL和PYTHON。

2.最常见的HTTP请求类型是GETANDPOST。

这些请求从WEB服务器获取资源,并将客户表单数据发送给WEB服务器。

get请求将表单内容作为URL的一部份发送。

大多数WEB服务器将GET请求查询字符串限制在1024个字符以内。

如果查询字符串超过这个限制,就必须使用POST请求。

POST请求中发送的数据不是URL的一部份,用户看不到它们。

如果表单包含许多字段,那通常由POST请求进行提交。

一些敏感的表单字段,如用户名和密码,也通常使用这种请求类型来发送。

GET请求的最简单形式的格式为GET/books/downloads.htmlHTTP/1.1。

服务器收到请求后,会发送一个HTTP标头,如Content-type:

text/html。

表明MIME类型,然后服务器发送请求的HTML/XHTML文档中文本(DOWNLOADS.HTML)。

3.web应用程序采用两类脚本编程,服务器端和客户端。

CGI脚本是服务器端脚本的一个例子,客户端脚本的一个例子是javascript。

Chapter 7. 基于面向对象的编程

TableofContents

7.1.知识点

7.2.良好的编程习惯

7.3.常见编程错误

7.4.测试和调试提示

7.5.软件工程知识

7.6.性能提示

7.1. 知识点

1.在过程式语言中,基本编程单元是“函数”,在面向对象语言中,基本编程单元是“类”,最终要通过它来实例化(即创建)对象。

2.__init__方法是类的“构造函数”方法。

每次创建类的一个对象时,都会执行它的构造函数。

它会初始化对象属性,并返回None。

3.包括构造函数在内的所有方法至少要指定一个参数。

该参数代表要调用其方法的类的对象。

人们常把这个参数称为“类实例对象”。

但由于这术语容易混淆,所以我们将任何方法的第一个参数都称为“对象引用参数”,或简称“对象引用”。

方法必须通过对象引用来访问从属于类的属性以及其它方法。

按照约定,对象引用参数称为self。

4.类的特殊属性。

∙__bases__包含基类的一个元组,类可以从这些基类直接继承。

如果类不从其他类继承,元组就会为空。

∙__dict__与类的命名空间对应的一个字典。

其中每个键-值对都代表在命名空间中的一个标识符及其值。

∙__doc__类的文档字符串。

如果类没有指定文档化字符串,值为None。

∙__module__包含模块(文件)名的一个字符串,类定义于这个模块中。

∙__name__包含类名的一个字符串。

5.在C++和java等程序语言中,类可明确指出类的客户能访问哪些属性或方法。

这些属性或方法被认为是“公共”的。

不能由类的客户访问的属性和方法则被认为是私有的。

在python中,对象的属性是肯定能访问的--没有办法阻止其它代码访问数据。

然而,python提供一种特别的机制来防止任意访问数据。

在属性名附加双下划线前缀。

python解释器会对属性执行“名称重整”。

如self.__hour,python会创建一个_Classname__hour的属性。

但它一样是可访问的,只是名字变了。

6.构造函数也可以定义默认参数,从而在客户没有指定参数的前提下,为对象属性指定初始值。

还可以定义关键字参数。

7.析构函数__del__是构造函数__init__的相反,用于执行“终止清理”,然后由解释器回收对象的内存,使内存能被重用。

析构函数通常只指定self参数,并返回None。

8.类的每个对象都拥有在构造函数中创建的所有属性的拷贝。

特定情况下,类的所有对象只能共享属性的一个拷贝。

为此要使用“类属性”。

它是“类范围”的信息(也就是说,它是类的一个属性,而非类的特定对象属性)。

它可节省空间和时间,提高性能。

为访问类属性,只需为属性名附加类名前缀,再加一个小数点即可。

(Classname.xxx)

7.2. 良好的编程习惯

1.文档化字符串习惯上是一个三引号字符串。

这样可以在不改变引号样式的前提下,扩展一个程序的文档(例如添加更多的行)。

2.尽可包含文档化字符串,使程序更有条理。

3.将所有方法的第一个参数都命名为self。

始终遵循这一命名约定,可确保不同程序员编写的python程序是一致的。

4.属性名以单下划线开头,虽然在python语法中没有特殊的含义,但单下划线是python程序员使用类时约定使用的符号,表明程序员不希望类的用户直接访问属性。

以单划线开头的属性揭示一个类的接口的相关信息。

类如果定义了此类属性,它的客户就只能通过类提供的访问方法来访问并修改属性值。

如果不是这样做,通常会导致程序执行期间出现不可预料的错误。

7.3. 常见编程错误

1.忘记将对象引用(通常是self参数)设为方法定义中的第一个参数,会导致该方法在运行时被调用时,造成严重逻辑错误。

2.直接访问对象的属性可能导致数据进入不一致状态。

一个办法是让类提供“访问方法”,通过一种得到精心控制的方式来读写类数据。

3.如果忘记在方法内部通过对象引用(通常称为self)来访问由对象的类定义的另一个方法,就会导致严重的运行时错误或者逻辑错误。

如全局命名空间包含的一个函数与类的某个方法同名,就会产生逻辑错误。

此时,如果忘记通过对象引用来访问方法名,实际会调用全局函数。

7.4. 测试和调试提示

1.即使提供了访问方法,也无法自动确保数据完整性,程序员必须提供有效性验证。

7.5. 软件工程知识

1.本书的中心思想是“重用,重用,再重用”。

我们的重点是“创建宝贵的类”,创造有价值的“软件资产”。

2.先初始化对象,再让客户代码调用对象的方法。

不能依赖客户代码正确初始化对象。

3.利用访问方法控制对属性的访问(尤其是写访问)有助于确保数据完整性。

4.python的类和模块化机利于程序的独立实现。

如果代码所用的一个类的实现发生了改变,这段代码是无需更改的。

5.并不是所有的方法都要作为类的接口的一部份。

有的方法是类的其它方法的一种实用方法,不准备供类的客户使用。

6.将客户不应该访问的任何数据设为私有。

7.如果类的一个方法提供了构造函数(或其他方法)需要的全部或部份功能,请从构造函数(或其他方法)中调用那个方法。

这样可简化代码的维护,并减少代码的实现改变后出错的可能。

一个通用规则是:

避免重复代码。

8.合成是软件重用的一种形式,即类的成员引用了其他类的对象。

9.在类成员引用了另一个类的对象的前提下,使那个成员对象能被公共访问,不但没有违反封装性,而且还可隐藏那个成员对象的私有成员

7.6. 性能提示

1.链式比较表达式(0<=a<10)的效率比非链式表达式(a>=0anda<10)更高,因为链式比较表达式中的每个条件都只执行一次。

2.如果数据的一个拷贝已经够用,请用类属性以节省空间。

Chapter 8. 自定义类

TableofContents

8.1.知识点

8.2.良好的编程习惯

8.3.常见编程错误

8.4.软件工程知识

8.5.性能提示

8.1. 知识点

1.运算符+在python中具有多种用途,比如整数加法和字符串连接。

这就是运算符重载的一个例子。

它会在不同的背景下执行最恰当的运算。

2.python类可定义特殊方法__str__,为类的对象提供一个不正式的(即人们更容易理解的)字符串表示。

如果类的客户程序包含以下语句:

printobjectofclass,那么python会调用对象的__str__方法,并输出那个方法所返回的字符串。

如:

printtest就会执行以下语句:

printtest.__str__

3.前面介绍客户访问对象属性的方法有两种,一种是客户可直接访问属性(使用点访问运算符):

另外,也可通过客户定义的访问方法来访问属性。

这一节讨论另外一种技术---定义特殊方法,自定义直接属性访问的行为。

python提供了一系列特殊方法,类可定义这此方法,以控制点访问运算符操纵类对象的方式。

如:

∙__delattr__客户删除一个属性时执行(例如delanObject.attribute)

∙__getattr__客户访问一个属性名,但在对象__dict__属性中找不到这个名称时执行(例如anObject.unfoundName)

∙__setattr__客户将值指派给对象的属性时执行(例如anObject.attribute=value)

4.在多数python运算符和增

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 冶金矿山地质

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1