Tuesday, December 2, 2008

Python learning notes

Python learning notes




1. 继续( \ )

Python 语句,一般使用换行分隔,也就是说一行一个语句。一行过长的语句可以使用反斜

杠( \ ) 分解成几行



2. Built-in functions



dir([obj]) 显示对象的属性,如果没有提供参数, 则显示全局变量的名字



help([obj]) 以一种整齐美观的形式 显示对象的文档字符串, 如果没有提供任何参

数, 则会进入交互式帮助。

cmp()对象的比较操作。
内建函数cmp()用于比较两个对象obj1 和obj2, 如果obj1 小于obj2, 则返回一个负整
数,如果obj1 大于obj2 则返回一个正整数, 如果obj1 等于obj2, 则返回0。它的行为非常
类似于C 语言的strcmp()函数。比较是在对象之间进行的,不管是标准类型对象还是用户自定
义对象。如果是用户自定义对象, cmp()会调用该类的特殊方法__cmp__()。



3. “多元”赋值



另一种将多个变量同时赋值的方法我们称为多元赋值(multuple)。这不是官方Python 术

语, 而是我们将 "mul-tuple"连在一起自造的。因为采用这种方式赋值时, 等号两边的对象

都是元组(我们在2.8 节讲过元组是一种Python 基本数据类型)。

>>> x, y, z = 1, 2, 'a string'

>>> x
1
>>> y
2
>>> z
'a string'

在上面的例子里, 两个整数对象(值分别为1 和2)及一个字符串对象, 被分别赋值给
x, y 和z。通常元组需要用圆括号(小括号)括起来,尽管它们是可选的。我们建议总是加上
圆括号以使得你的代码有更高的可读性。
>>> (x, y, z) = (1, 2, 'a string')

4.交换变量

# swapping variables in Python
>>> x, y = 1, 2
>>> x
1
>>> y
2
>>> x, y = y, x
>>> x
2
>>> y
1

5. 相关模块和开发工具
Python 代码风格指南(PEP8), Python 快速参考和Python 常见问答都是开发者很重要的
“工具”。另外, 还有一些模块会帮助你成为一个优秀的Python 程序员。
􀁺 Debugger: pdb
􀁺 Logger: logging
􀁺 Profilers: profile, hotshot, cProfile
调试模块 pdb 允许你设置(条件)断点,代码逐行执行,检查堆栈。它还支持事后调试。
logging 模块是在 Python2.3 中新增的, 它定义了一些函数和类帮助你的程序实现灵活
的日志系统。共有五级日志级别: 紧急, 错误,警告,信息和调试。
历史上,因为不同的人们为了满足不同的需求重复实现了很多性能测试器,Python 也有好
几个性能测试模块。 最早的 Python profile 模块是Python 写成的,用来测试函数的执行时
间,及每次脚本执行的总时间,既没有特定函数的执行时间也没有被包含的子函数调用时间。
在三个profile 模块中,它是最老的也是最慢的,尽管如此, 它仍然可以提供一些有价值的性
能信息。 hotshot 模块是在Python2.2 中新增的,它的目标是取代profile 模块, 它修复了
profile 模块的一些错误, 因为它是用C 语言写成,所以它有效的提高了性能。 注意 hotshot
重点解决了性能测试过载的问题, 但却需要更多的时间来生成结果。Python2.5 版修复了
hotshot 模块的一个关于时间计量的严重bug。
cProfile 模块是Python2.5 新增的, 它用来替换掉已经有历史的hotshot 和profile 模
块。被作者确认的它的一个较明显的缺点是它需要花较长时间从日志文件中载入分析结果, 不
支持子函数状态细节及某些结果不准。它也是用 C 语言来实现的

till page 120
to be continued

No comments: