Differences between revisions 6 and 7
Revision 6 as of 2006-01-17 08:27:29
Size: 5408
Editor: WeiZhong
Comment:
Revision 7 as of 2006-01-17 11:37:48
Size: 5113
Editor: WeiZhong
Comment:
Deletions are marked like this. Additions are marked like this.
Line 4: Line 4:

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

初译: Feather andelf@gmail.com
修正补充: WeiZhong weizhong2004@gmail.com
[[TableOfContents]]

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

== 运行Python ==
Python 程序通过解释器执行。如果你的机器已经装好了python,简单的在命令行键入python即可运行python解释器。在解释器运行的时,会有一个命令提示符 >>>,在提示符后键入你的程序语句,键入的语句将会立即执行。在下边的例子中,我们在>>>提示符后边键入最常见的显示"Hello World"的命令:
,键入的语句将会立即执行。在下边的例子中,我们在>>>提示符后边键入最常见的显示"Hello World"的命令:
Line 77: Line 65:
1050.0
1102.5
1157.625
1215.50625
1276.2815625
1 1050.0
2 1102.5
3 1157.625
4 1215.50625
5 1276.2815625
Line 83: Line 71:
Python 是一种动态语言,在程序运行过程中,同一变量名可以(在程序运行的不同阶段)代表不同形式的值(整型,浮点,列表,元组...)。事实上,程序中使用的变量名只是各种数据及对象的标签(引用),用来在变量名和值之间建立联系(绑定)。这与C不同,C是一个变量名代表一个内存中固定大小和位置的对象.从例子Listing 1.1中的变量principal可以看出Python的动态特性.最初,它被赋值为一个整数,但是稍后程序将它再次赋值: Python 是一种动态语言,在程序运行过程中,同一变量名可以(在程序运行的不同阶段)代表不同形式的值(整型,浮点,列表,元组...)。事实上,程序中使用的变量名只是各种数据及对象的引用。这与C语言不同,C语言中变量名代表的是用来存放结果的一个固定位置及长度的内存片段。从例子Listing 1.1中的变量principal可以看出Python语言的动态特性.最初,它被赋值为一个整数,但是稍后程序将它再次赋值:
Line 85: Line 73:
principal = principal*(1+rate) `principal = principal*(1+rate)`
Line 87: Line 75:
这个表达式不仅改变了principal的值,也改变了它的类型.运行时,先完成等号后边的计算,然后给principal赋值.因为rate是一个浮点数,所以计算后,principal也被赋值为浮点数. 这个语句计算表达式的值,然后将计算结果赋给 principal 变量做为它的新值。当赋值动作发生时,principal最初绑定的值1000被丢弃。赋值结束,不但 principal 绑定的值发生了变化,它的类型也随着赋值动作发生了相应的变化。在这个例子中,由于rate是一个浮点数,所以在赋值完成后,principal也变成一个浮点数。
Line 89: Line 77:
Python中每行只有一单独的语句,你也可以用分号开语句,这样: Python中每个语句以换行结束,当然你也可以在一行中写多个语句,这时语句之间必须使用用分号分隔,这样:
Line 91: Line 79:
principal = 1000; rate = 0.05; numyears = 5; `principal = 1000; rate = 0.05; numyears = 5;`
Line 93: Line 81:
while 语句检查在它后边的条件表达式,如果表达式为真,就会执行重复执行一块语句,直到表达式为假.循环的主体部分用缩进来指示.在Listing 1.1中while语句后的三条语句每次循环中都执行.Python没有指定缩进的空白(空格和制表符)数目,但是同一层次的语句必须有相同的缩进. (建议这样的写法仅仅用于调试语句,因为可以很方便的只删一行就删掉全部调试语句)
Line 95: Line 83:
Listing 1.1中的程序有点不足就是输出不是很好看.为了让它更好,你可以用format string把数字的精确度定为小数点后两位. while 语句首先检查在它后边的循环条件,若条件表达式为真,它就执行冒号后面的语句块,然后再次测试循环条件,直至为假。冒号后面的缩近语句块为循环体。注意,Python语言使用缩进块来表示程序逻辑(其它大多数语言使用大括号等)。在Listing 1.1中while语句后的三条语句为循环体,在每次循环中均执行。Python并未指定缩进的空白(空格和制表符)数目,唯一的要求是同一层次的语句必须有相同的缩进空白。(注意,要么都是空格,要是么都制表符,千万别混用)
Line 97: Line 85:
Listing 1.1中的程序美中不足的就是输出不是很好看,为了让它美观一点,可以用格式字符串将计算结果只保留小数点后两位:
{{{
Line 99: Line 89:
这样,程序的输变为: 这样,程序的输就变为:
Line 101: Line 91:
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 操作表达式)
1 1050.00
2 1102.50
3
1157.63
4 1215.51
5
1276.28
}}}
格式字符串
包含普通文本格式化字符序列(例如"%d", "%s", 和 "%f"),这些序列定特类型的数据(如整型,字符串,浮点数)的输出格式.'%3d'将一个整数在宽度为3个字符的栏中右对齐,'%0.2f'将一个浮点数的小数点后部分转换为2位。格式字符串的作用和C语言中的sprintf()函数基本相同详细内容请参阅--操作符及表达式

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

,键入的语句将会立即执行。在下边的例子中,我们在>>>提示符后边键入最常见的显示"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

程序输出:

1 1050.0
2 1102.5
3 1157.625
4 1215.50625
5 1276.2815625

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

principal = principal*(1+rate)

这个语句计算表达式的值,然后将计算结果赋给 principal 变量做为它的新值。当赋值动作发生时,principal最初绑定的值1000被丢弃。赋值结束,不但 principal 绑定的值发生了变化,它的类型也随着赋值动作发生了相应的变化。在这个例子中,由于rate是一个浮点数,所以在赋值完成后,principal也变成一个浮点数。

Python中每个语句以换行结束,当然你也可以在一行中写多个语句,这时语句之间必须使用用分号分隔,就象下面这样:

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

(建议这样的写法仅仅用于调试语句,因为可以很方便的只删一行就删掉全部调试语句)

while 语句首先检查在它后边的循环条件,若条件表达式为真,它就执行冒号后面的语句块,然后再次测试循环条件,直至为假。冒号后面的缩近语句块为循环体。注意,Python语言使用缩进块来表示程序逻辑(其它大多数语言使用大括号等)。在Listing 1.1中while语句后的三条语句为循环体,在每次循环中均执行。Python并未指定缩进的空白(空格和制表符)数目,唯一的要求是同一层次的语句必须有相同的缩进空白。(注意,要么都是空格,要是么都制表符,千万别混用)

Listing 1.1中的程序美中不足的就是输出不是很好看,为了让它美观一点,可以用格式字符串将计算结果只保留小数点后两位:

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

这样,程序的输出就变为:

1 1050.00
2 1102.50
3 1157.63
4 1215.51
5 1276.28

格式字符串包含普通文本及格式化字符序列(例如"%d", "%s", 和 "%f"),这些序列决定特定类型的数据(如整型,字符串,浮点数)的输出格式.'%3d'将一个整数在宽度为3个字符的栏中右对齐,'%0.2f'将一个浮点数的小数点后部分转换为2位。格式字符串的作用和C语言中的sprintf()函数基本相同。详细内容请参阅第四章--操作符及表达式。

WeiZhong/2006-01-17 (last edited 2009-12-25 07:17:10 by localhost)