星期四, 八月 31, 2006

Python Doc Digest

输入一个文件结束符(UNIX kbdCtrl+D,Windows上是Ctrl+Z)解释器会以0值退出。如果这没有起作用,你可以输入以下命令退出:‘import sys; sys.exit()’。


启动解释器的第二个方法是‘python -c command [arg] ...’,这种方法可以在命令行中直接执行语句,赞同于Shell的-c 选项。因为Python 语句通常会包括空格之类的特殊字符,所以最好把整个语句用双引号包起来。


有些Python 模块也可以当作脚本使用。它们可以用‘python -m module [arg] ...’调用,这样就会像你在命令行中给出其完整名字一样运行源文件。


注意‘python file’和‘python <file’是有区别的。对于后一种情况,程序中类似于调用input() 、raw_input() 这样的输入请求,来自于确定的文件。因为在解析器开始执行之前,文件已经完全读入,所以程序指向文件尾。在前一种情况(这通常是你需要的)它们来自于任何联接到Python 解释器的标准输入,无论它们是文件还是其它设备。 


使用脚本文件时,经常会运行脚本然后进入交互模式。这也可以通过在脚本之前加上-i 参数来实现。(如果脚本来自标准输入,就不能这样运行,与前一段提到的原因一样。)


调用解释器时,脚本名和附加参数传入一个名为sys.argv 的字符串列表。没有给定脚本和参数时,它至少也有一个元素:sys.argv[0] 此时为空字符串。脚本名指定为‘-’(表示标准输入)时,sys.argv[0] 被设定为‘-’,使用-c 指令时,sys.argv[0] 被设定为’-c’。使用-m module 参数时,sys.agv[0]被设定为指定模块的全名。-c command 或者-m module 之后的参数不会被Python 解释器的选项处理机制所截获,而是留在sys.argv 中,供脚本命令操作。


------------------------------------------------------------------------------------

Python 的源文件可以通过编码使用ASCII 以外的字符集。最好的做法是在#! 行后面用一个特殊的注释来定义字符集。

# -*- coding: encoding -*-

根据这个声明,Python 会尝试将文件中的字符编码转为encoding 编码。并且,它尽可能的将指定的编码直接写成Unicode 文本。在Python 库参考手册中codecs 部分可以找到可用的编码列表(根据经验,推荐使用cp-936 或utf-8 处理中文)

------------------------------------------------------------------------------------

执行附加的启动文件,可以在全局启动文件中加入类似以下的代码:

import os

filename = os.environ.get(’PYTHONSTARTUP’)

if filename and os.path.isfile(filename):

    execfile(filename)

----------------------------------------------------------------------------------- 

循环可以有一个else 子句;它在循环迭代完整个列表(对于for)或执行条件为false (对于while)时执行,但循环被break 中止的情况下不会执行。以下搜索素数的救命程序演示了这个子句:

>>> for n in range(2, 10):
...     for x in range(2, n):
...         if n % x == 0:
...              print n, ’equals’, x, ’ ’, n/x
...              break
...     else:
...          # loop fell through without finding a factor
...          print n, ’is a prime number’
...
2 is a prime number
3 is a prime number
4 equals 2 2
5 is a prime number
6 equals 2 3
7 is a prime number
8 equals 2 4
9 equals 3 3

-----------------------------------------------------------------------------------

执行函数时会为局部变量引入一个新的符号表。所有的局部变量都存储在这个局部符号表中。引用参数时,会先从局部符号表中查找,然后是全局符号表,然后是内置命名表。注意的是,全局参数虽然可以被引用,但它们不能在函数中直接赋值(除非它们用global 语句命名)。

------------------------------------------------------------------------------------

文档字符串的格式:
第一行应该是关于对象用途的简介。简短起见,不用明确的陈述对象名或类型,因为它们可以从别的途径了解到(除非这个名字碰巧就是描述这个函数操作的动词)。这一行应该以大写字母开关,以句号结尾。

如果文档字符串有多行,第二行应该空出来,与接下来的详细描述明确分隔。接下来的文档(从第三行开始)应该有一或多段描述对象的调用约定、边界效应等。

Python 的解释器不会从多行的文档串中去除缩进,所以必要的时候应当自己清除缩进。这符合通常的习惯。第一行之后的第一个非空行决定了整个文档的缩进格式。(我们不用第一行是因为它通常紧靠着起始的引号,缩进格式显示的不清楚。)留白“相当于”是字符串的起始缩进。每一行都不应该有缩进,如果有缩进的话,所有的留白都应该清除掉。留白的长度应当等于扩展制表符的宽度(通常是8 个空格)。

以下是一个多行文档字符串的示例:

>>> def my_function():
...     """Do nothing, but document it.
...
...     No, really, it doesn’t do anything.
...     """
...     pass
...
>>> print my_function.__doc__
Do nothing, but document it.

No, really, it doesn’t do anything.





没有评论: