[:WeiZhong/2006-01-17:Python 精要参考(第二版)] Python Essential Reference, Second Edition 译文

原著:David M Beazley 出版商: New Riders Publishing

初译: Feather [email protected] 修正补充: WeiZhong [email protected] TableOfContents

第一章 了解Python

本章是Python的快速介绍,在这一节并不涉及python的特殊规则和细节,目标是通过几个示例快速了解Python语言的特点。本章简要介绍了变量,表达式,控制流,函数以及输入/输出的基本概念,并不涉及Python语言的高级特性。尽管如此,有经验的程序员还是能够通过阅读本章的材料创建高级程序。我们鼓励新手通过运行示例切身感受一下Python。

运行Python

Python 程序通过解释器执行。如果你的机器已经装好了python,简单的在命令行键入python即可运行python解释器。在解释器运行的时,会有一个命令提示符 >>>,在提示符后键入你的程序语句,键入的语句将会立即执行。在下边的例子中,我们在>>>提示符后边键入最常见的显示"Hello World"的命令:

Python 2.4.2 (#67, Sep 28 2005, 12:41:11) [MSC v.1310 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> print "Hello World"
Hello World
>>>


程序也可以像下面一样放置在一个文件中

# helloworld.py
print "Hello World"

Python源代码文件使用.py后缀.'#'表示注释(到行末结束)

执行文件helloworld.py

% python helloworld.py
Hello World
%

在Windows 下,可能通过双击一个.py文件来执行python程序。windows会自动调用python解释程序,然后启动一个终端窗口(类DOS窗口)执行程序。在这种情况下,终端窗口会在程序执行完毕后立即关闭(经常是在你看到它的输出之前)。为避免这个问题,你可以使用python集成开发环境,例如IDLE或Pythonwin。另一个可行的方法是建立一个 bat文件,在文件写入这样一行语句,如 python -i helloworld.py。运行这个批处理,程序在执行完成后会自动进入python解释器。

在解释器中,也可以通过函数execfile()来运行一个保存在磁盘上的程序,如下例:

>>> execfile("helloworld.py")
Hello World

在UNIX下,你可以在程序的首行写入 #! 魔法字符串 来自动调用python解释器执行你的脚本。

#!/usr/local/bin/python
print "Hello World"

解释器会一直运行直到文件结束。如果在交互模式下,键入 EOF字符退出解释器。在UNIX下,EOF字符是Ctrl+ D;在Windows下,EOF字符是Ctrl+Z.也可以在程序中使用sys.exit()函数或者通过引发SystemExit异常来退出程序:

>>> import sys
>>> sys.exit()

或者

>>> raise SystemExit

变量和表达式

通过Listing 1.1所示的程序示例变量和表达式的用法

Listing 1.1 复利计算器(Simple Compound-Interest Calculation)

   1 principal = 1000        # Initial amount (本金)
   2 rate = 0.05             # Interest rate (利率)
   3 numyears = 5            # Number of years (期数,年)
   4 year = 1
   5 while year <= numyears:
   6         principal = principal*(1+rate)
   7         print year, principal
   8         year += 1

程序输出:

1050.0
1102.5
1157.625
1215.50625
1276.2815625

Python 是一种动态语言,在程序运行过程中,同一变量名可以(在程序运行的不同阶段)代表不同形式的值(整型,浮点,列表,元组...)。事实上,程序中使用的变量名只是各种数据及对象的标签(引用),用来在变量名和值之间建立联系(绑定)。这与C不同,C是一个变量名代表一个在内存中固定大小和位置的对象.从例子Listing 1.1中的变量principal可以看出Python的动态特性.最初,它被赋值为一个整数,但是稍后程序将它再次赋值:

principal = principal*(1+rate)

这个表达式不仅改变了principal的值,也改变了它的类型.运行时,先完成等号后边的计算,然后给principal赋值.因为rate是一个浮点数,所以计算后,principal也被赋值为浮点数.

Python中每行只有一个单独的语句,你也可以用分号来分开语句,就像下边这样:

principal = 1000; rate = 0.05; numyears = 5;

while 语句检查在它后边的条件表达式,如果表达式为真,就会执行重复执行一块语句,直到表达式为假.循环的主体部分用缩进来指示.在Listing 1.1中while语句后的三条语句每次循环中都执行.Python没有指定缩进的空白(空格和制表符)数目,但是同一层次的语句必须有相同的缩进.

Listing 1.1中的程序有点不足就是输出不是很好看.为了让它更好,你可以用format string把数字的精确度定为小数点后两位.

print "%3d %0.2f" % (year, principal)

这样,程序的输入就会变为:

1050.00 1102.50 1157.63 1215.51 1276.28

format string包含普通文本和格式化字符的序列(例如"%d", "%s", 和 "%f"),这些序列指定了特殊类型的数据(如整型,字符串,浮点数)的编排格式.'%3d'将一个整数在宽度为3个字符的栏中右对齐,'%0.2f'将一个浮点数的小数点后部分转换为2位.format strings的作用和C中的sprintf()基本相同.详细内容在Chapter 4, "Operators and Expressions."(第4章 操作和表达式)