1、View page sourceNext Docs Python 入门指南Python 入门指南Release: 3.6.0Date: Feb 18, 2017Python 是一门简单易学且功能强大的编程语言。它拥有高效的高级数据结构,并且能够用简单而又高效的方式进行面向对象编程。Python 优雅的语法和动态类型,再结合它的解释性,使其在大多数平台的许多领域成为编写脚本或开发应用程序的理想语言。你可以自由地从 Python 官方点: http:/www.python.org,以源代码或二进制形式获取 Python 解释器及其标准扩展库,并可以自由的分发。此站点同时也提供了大量的第三方 Pyt
2、hon 模块、程序和工具,及其附加文档。你可以很容易的使用 C 或 C+(其他可以通过 C 调用的语言)为 Python 解释器扩展新函数和数据类型。Python 还可以被用作定制应用程序的一门扩展语言。本手册非正式的向读者介绍了 Python 语言及其体系相关的基本知识与概念。在学习实践中结合使用Python 解释器是很有帮助的,不过所有的例子都是完整的,所以本手册亦可离线阅读。如果需要了解相关标准库或对象的详细介绍,请查阅 Python 参考文档 。Python 参考手册 提供了更多语言相关的正式说明。如果想要使用 C 或 C+ 编写扩展,请查阅 Python 解释器扩展和集成章节 和 C
3、 API 参考手册 。当然也可阅读一些深入介绍 Python 知识的图书。本手册不会尝试涵盖 Python 的全部知识和每个特性,甚至不会涵盖所有常用的特性。相反地,它介绍了Python 中许多最引人瞩目的特性,并且会给你一个关于语言特色和风格的认识。读完之后,你将能够阅读和编写 Python 模块或程序,并为以后使用 Python 参考手册 继续学习诸多 Python 模块库做好准备。词汇表 也值得浏览一下。1. 开胃菜2. 使用 Python 解释器2.1. 调用 Python 解释器2.1.1. 参数传递2.1.2. 交互模式2.2. 解释器及其环境2.2.1. 源程序编码3. Pyth
4、on 简介3.1. 将 Python 当做计算器3.1.1. 数字3.1.2. 字符串3.1.3. 列表3.2. 编程的第一步4. 深入 Python 流程控制4.1. if 语句4.2. for 语句4.3. range() 函数4.4. break 和 continue 语句, 以及循环中的 else 子句4.5. pass 语句4.6. 定义函数4.7. 深入 Python 函数定义4.7.1. 默认参数值4.7.2. 关键字参数4.7.3. 可变参数列表4.7.4. 参数列表的分拆4.7.5. Lambda 形式4.7.6. 文档字符串4.7.7. 函数注解4.8. 插曲:编码风格5.
5、 数据结构5.1. 关于列表更多的内容5.1.1. 把列表当作堆栈使用5.1.2. 把列表当作队列使用5.1.3. 列表推导式5.1.4. 嵌套的列表推导式5.2. del 语句5.3. 元组和序列5.4. 集合5.5. 字典5.6. 循环技巧5.7. 深入条件控制5.8. 比较序列和其它类型6. 模块6.1. 深入模块6.1.1. 作为脚本来执行模块6.1.2. 模块的搜索路径6.1.3. “编译的” Python 文件6.2. 标准模块6.3. dir() 函数6.4. 包6.4.1. 从 * 导入包6.4.2. 包内引用6.4.3. 多重目录中的包7. 输入和输出7.1. 格式化输出7.
6、1.1. 旧式的字符串格式化7.2. 文件读写7.2.1. 文件对象方法7.2.2. 使用 json 存储结构化数据8. 错误和异常8.1. 语法错误8.2. 异常8.3. 异常处理8.4. 抛出异常8.5. 用户自定义异常8.6. 定义清理行为8.7. 预定义清理行为9. 类9.1. 术语相关9.2. Python 作用域和命名空间9.2.1. 作用域和命名空间示例9.3. 初识类9.3.1. 类定义语法9.3.2. 类对象9.3.3. 实例对象9.3.4. 方法对象9.3.5. 类和实例变量9.4. 一些说明9.5. 继承9.5.1. 多继承9.6. 私有变量9.7. 补充9.8. 异常也
7、是类9.9. 迭代器9.10. 生成器9.11. 生成器表达式10. Python 标准库概览10.1. 操作系统接口10.2. 文件通配符10.3. 命令行参数10.4. 错误输出重定向和程序终止10.5. 字符串正则匹配10.6. 数学10.7. 互联网访问10.8. 日期和时间10.9. 数据压缩10.10. 性能度量10.11. 质量控制10.12. “瑞士军刀”11. 标准库浏览 Part II11.1. 输出格式11.2. 模板11.3. 使用二进制数据记录布局11.4. 多线程11.5. 日志11.6. 弱引用11.7. 列表工具11.8. 十进制浮点数算法12. 虚拟环境和包1
8、2.1. 简介12.2. 创建虚拟环境12.3. 使用 pip 管理包13. 接下来?14. 交互式输入行编辑历史回溯14.1. Tab 补全和历史记录14.2. 其它交互式解释器15. 浮点数算法:争议和限制15.1. 表达错误16. 附录16.1. 交互模式16.1.1. 错误处理16.1.2. 可执行 Python 脚本16.1.3. 交互式启动文件16.1.4. 定制模块 Copyright 2013, D.D.Built with Sphinx using a theme provided by Read the Docs. Python tutorialView page sour
9、ceNext Docs 1. 开胃菜1. 开胃菜如果你要用计算机做很多工作,最后你会发现有一些任务你更希望用自动化的方式进行处理。比如,你想要在大量的文本文件中执行查找/替换,或者以复杂的方式对大量的图片进行重命名和整理。也许你想要编写一个小型的自定义数据库、一个特殊的 GUI 应用程序或一个简单的小游戏。如果你是一名专业的软件开发者,可能你必须使用几种 C/C+/JAVA 类库,并且发现通常编写/编译/测试/重新编译的周期是如此漫长。也许你正在为这些类库编写测试用例,但是发现这是一个让人烦躁的工作。又或者你已经完成了一个可以使用扩展语言的程序,但你并不想为此重新设计并实现一套全新的语言。那么
10、 Python 正是你所需要的语言。虽然你能够通过编写 Unix shell 脚本或 Windows 批处理文件来处理其中的某些任务,但 Shell 脚本更适合移动文件或修改文本数据,并不适合编写 GUI 应用程序或游戏;虽然你能够使用 C/C+/JAVA 编写程序,但即使编写一个简单的 first-draft 程序也有可能耗费大量的开发时间。相比之下,Python 更易于使用,无论在 Windows、Mac OS X 或 Unix 操作系统上它都会帮助你更快地完成任务。虽然 Python 易于使用,但它却是一门完整的编程语言;与 Shell 脚本或批处理文件相比,它为编写大型程序提供了更多的
11、结构和支持。另一方面,Python 提供了比 C 更多的错误检查,并且作为一门 高级语言,它内置支持高级的数据结构类型,例如:灵活的数组和字典。因其更多的通用数据类型,Python 比 Awk 甚至Perl 都适用于更多问题领域,至少大多数事情在 Python 中与其他语言同样简单。Python 允许你将程序分割为不同的模块,以便在其他的 Python 程序中重用。Python 内置提供了大量的标准模块,你可以将其用作程序的基础,或者作为学习 Python 编程的示例。这些模块提供了诸如文件 I/O、系统调用、Socket 支持,甚至类似 Tk 的用户图形界面(GUI)工具包接口。Python
12、 是一门解释型语言,因为无需编译和链接,你可以在程序开发中节省宝贵的时间。Python 解释器可以交互的使用,这使得试验语言的特性、编写临时程序或在自底向上的程序开发中测试方法非常容易。你甚至还可以把它当做一个桌面计算器。Python 让程序编写的紧凑和可读。用 Python 编写的程序通常比同样的 C、C+ 或 Java 程序更短小,这是因为以下几个原因:* 高级数据结构使你可以在一条语句中表达复杂的操作;* 语句组使用缩进代替开始和结束大括号来组织;* 变量或参数无需声明。Python 是 可扩展 的:如果你会 C 语言编程便可以轻易地为解释器添加内置函数或模块,或者为了对性能瓶颈作优化,
13、或者将 Python 程序与只有二进制形式的库(比如某个专业的商业图形库)连接起来。一旦你真正掌握了它,你可以将 Python 解释器集成进某个 C 应用程序,并把它当作那个程序的扩展或命令行语言。顺便说一句,这个语言的名字来自于 BBC 的 “Monty Pythons Flying Cirecus” 节目,和爬行类动物没有任何关系。在文档中引用 Monty Python 的典故不仅可行,而且值得鼓励!现在你已经为 Python 兴奋不已了吧,大概想要领略一些更多的细节!学习一门语言最好的方法就是使用它,本指南推荐你边读边使用 Python 解释器练习。下一节中,我们将解释 Python 解
14、释器的用法。这是很简单的一件事情,但它有助于试验后面的例子。本手册剩下的部分将通过示例介绍 Python 语言及系统的诸多特性,开始是简单的语法、数据类型和表达式,接着介绍函数与模块,最后涉及异常和自定义类这样的高级内容。 Previous Copyright 2013, D.D.Built with Sphinx using a theme provided by Read the Docs. Python tutorialView page sourceNext Docs 2. 使用 Python 解释器2. 使用 Python 解释器2.1. 调用 Python 解释器Python 解释
15、器通常被安装在目标机器的 /usr/local/bin/python3.5 目录下。将 /usr/local/bin 目录包含进Unix shell 的搜索路径里,以确保可以通过输入:python3.5命令来启动他。1 由于 Python 解释器的安装路径是可选的,这也可能是其它路径,你可以联系安装Python 的用户或系统管理员确认(例如, /usr/local/python 就是一个常见的选择)。在 Windows 机器上,Python 通常安装在 C:Python35 位置,当然你可以在运行安装向导时修改此值。要想把此目录添加到你的 PATH 环境变量中,你可以在 DOS 窗口中输入以下
16、命令:set path=%path%;C:python35通常你可以在主窗口输入一个文件结束符(Unix 系统是 ControlD ,Windows 系统是 ControlZ )让解释器以 0 状态码退出。如果那没有作用,你可以通过输入 quit() 命令退出解释器。Python 解释器具有简单的行编辑功能。在 Unix 系统上,任何 Python 解释器都可能已经添加了 GNUreadline 库支持,这样就具备了精巧的交互编辑和历史记录等功能。在 Python 主窗口中输入 Control-P 可能是检查是否支持命令行编辑的最简单的方法。如果发出嘟嘟声(计算机扬声器),则说明你可以使用命令
17、行编辑功能;更多快捷键的介绍请参考 交互式输入行编辑历史回溯。如果没有任何声音,或者显示 P字符,则说明命令行编辑功能不可用;你只能通过退格键从当前行删除已键入的字符并重新输入。Python 解释器有些操作类似 Unix shell:当使用终端设备(tty)作为标准输入调用时,它交互的解释并执行命令;当使用文件名参数或以文件作为标准输入调用时,它读取文件并将文件作为 脚本 执行。第二种启动 Python 解释器的方法是 python c command arg . ,这种方法可以在 命令行 执行 Python 语句,类似于 shell 中的 -c 选项。由于 Python 语句通常会包含空格或
18、其他特殊 shell 字符,一般建议将 命令用单引号包裹起来。有一些 Python 模块也可以当作脚本使用。你可以使用 python m module arg . 命令调用它们,这类似在命令行中键入完整的路径名执行 模块 源文件一样。使用脚本文件时,经常会运行脚本然后进入交互模式。这也可以通过在脚本之前加上 -i 参数来实现。2.1.1. 参数传递调用解释器时,脚本名和附加参数传入一个名为 sys.argv 的字符串列表。你能够获取这个列表通过执行import sys ,列表的长度大于等于1;没有给定脚本和参数时,它至少也有一个元素: sys.argv0 此时为空字符串。脚本名指定为 (表示标
19、准输入)时, sys.argv0 被设定为 ,使用 -c 指令时, sys.argv0 被设定为 c 。使用 -m 模块 参数时, sys.argv0 被设定为指定模块的全名。-c 指令 或者 -m 模块 之后的参数不会被 Python 解释器的选项处理机制所截获,而是留在 sys.argv 中,供脚本命令操作。2.1.2. 交互模式从 tty 读取命令时,我们称解释器工作于 交互模式。这种模式下它根据主提示符来执行,主提示符通常标识为三个大于号( );继续的部分被称为 从属提示符,由三个点标识( . )。在第一行之前,解释器打印欢迎信息、版本号和授权提示:$ python3.5Python
20、3.5.2 (default, Mar 16 2014, 09:25:04)GCC 4.8.2 on linuxType “help“, “copyright“, “credits“ or “license“ for more information.输入多行结构时需要从属提示符了,例如,下面这个 if 语句: the_world_is_flat = 1 if the_world_is_flat:. print(“Be careful not to fall off!“).Be careful not to fall off!关于交互模式更多的内容,请参见 交互模式。2.2. 解释器及其环境2
21、.2.1. 源程序编码默认情况下,Python 源文件是 UTF-8 编码。在此编码下,全世界大多数语言的字符可以同时用在字符串、标识符和注释中 尽管 Python 标准库仅使用 ASCII 字符做为标识符,这只是任何可移植代码应该遵守的约定。如果要正确的显示所有的字符,你的编辑器必须能识别出文件是 UTF-8 编码,并且它使用的字体能支持文件中所有的字符。你也可以为源文件指定不同的字符编码。为此,在 #! 行(首行)后插入至少一行特殊的注释行来定义源文件的编码:# * coding: encoding *通过此声明,源文件中所有的东西都会被当做用 encoding 指代的 UTF-8 编码对
22、待。在 Python 库参考手册codecs 一节中你可以找到一张可用的编码列表。例如,如果你的编辑器不支持 UTF-8 编码的文件,但支持像 Windows-1252 的其他一些编码,你可以定义:# * coding: cp1252 *这样就可以在源文件中使用 Windows-1252 字符集中的所有字符了。这个特殊的编码注释必须在文件中的第一或第二 行定义。Footnotes1 在 Unix 系统上,Python 3.X 解释器默认未被安装成名为 python 的命令,所以它不会与同时安装在系统中的Python 2.x 命令冲突。 Previous Copyright 2013, D.D.
23、Built with Sphinx using a theme provided by Read the Docs. Python tutorialView page sourceNext Docs 3. Python 简介3. Python 简介下面的例子中,输入和输出分别由大于号和句号提示符( 和 . )标注:如果想重现这些例子,就要在解释器的提示符后,输入(提示符后面的)那些不包含提示符的代码行。需要注意的是在练习中遇到的从属提示符表示你需要在最后多输入一个空行,解释器才能知道这是一个多行命令的结束。本手册中的很多示例包括那些带有交互提示符的都含有注释。Python 中的注释以 # 字符
24、起始,直至实际的行尾(译注这里原作者用了 physical line 以表示实际的换行而非编辑器的自动换行)。注释可以从行首开始,也可以在空白或代码之后,但是不出现在字符串中。文本字符串中的 # 字符仅仅表示 #。代码中的注释不会被 Python 解释,录入示例的时候可以忽略它们。如下示例:# this is the first commentspam = 1 # and this is the second comment# . and now a third!text = “# This is not a comment because its inside quotes.“3.1. 将
25、Python 当做计算器我们来尝试一些简单的 Python 命令。启动解释器然后等待主提示符 出现(不需要很久)。3.1.1. 数字解释器表现得就像一个简单的计算器:可以向其录入一些表达式,它会给出返回值。表达式语法很直白:运算符 +,* 和 / 与其它语言一样(例如:Pascal 或 C);括号 ( () ) 用于分组。例如: 2 + 24 50 5*620 (50 5*6) / 45.0 8 / 5 # division always returns a floating point number1.6整数(例如,2, 4, 20 )的类型是 int,带有小数部分的数字(例如,5.0, 1
26、.6 )的类型是 float。在本教程的后面我们会看到更多关于数字类型的内容。除法( / )永远返回一个浮点数。如要使用 floor 除法 并且得到整数结果(丢掉任何小数部分),你可以使用/ 运算符;要计算余数你可以使用 % 17 / 3 # classic division returns a float5.666666666666667 17 / 3 # floor division discards the fractional part5 17 % 3 # the % operator returns the remainder of the division2 5 * 3 + 2 #
27、 result * divisor + remainder17通过 Python,还可以使用 * 运算符计算幂乘方 1: 5 * 2 # 5 squared25 2 * 7 # 2 to the power of 7128等号( = )用于给变量赋值。赋值之后,在下一个提示符之前不会有任何结果显示: width = 20 height = 5*9 width * height900变量在使用前必须 “定义”(赋值),否则会出错: # try to access an undefined variable. nTraceback (most recent call last):File “, l
28、ine 1, in NameError: name n is not defined浮点数有完整的支持;整数和浮点数的混合计算中,整数会被转换为浮点数: 3 * 3.75 / 1.57.5 7.0 / 23.5交互模式中,最近一个表达式的值赋给变量 _。这样我们就可以把它当作一个桌面计算器,很方便的用于连续计算,例如: tax = 12.5 / 100 price = 100.50 price * tax12.5625 price + _113.0625 round(_, 2)113.06此变量对于用户是只读的。不要尝试给它赋值 你只会创建一个独立的同名局部变量,它屏蔽了系统内置变量的魔术效果
29、。除了 int 和 float,Python 还支持其它数字类型,例如 Decimal 和 Fraction。Python 还内建支持 复数 ,使用后缀 j 或 J 表示虚数部分(例如,3+5j)。3.1.2. 字符串相比数值,Python 也提供了可以通过几种不同方式表示的字符串。它们可以用单引号 ( . ) 或双引号( “.“ ) 标识 2。 可以用来转义引号: spam eggs # single quotesspam eggs doesnt # use to escape the single quote.“doesnt“ “doesnt“ # .or use double quote
30、s instead“doesnt“ “Yes,“ he said.“Yes,“ he said. “Yes,“ he said.“Yes,“ he said. “Isnt,“ she said.“Isnt,“ she said.在交互式解释器中,输出的字符串会用引号引起来,特殊字符会用反斜杠转义。虽然可能和输入看上去不太一样,但是两个字符串是相等的。如果字符串中只有单引号而没有双引号,就用双引号引用,否则用单引号引用。print() 函数生成可读性更好的输出, 它会省去引号并且打印出转义后的特殊字符: “Isnt,“ she said.“Isnt,“ she said. print(“Isnt
31、,“ she said.)“Isnt,“ she said. s = First line.nSecond line. # n means newline s # without print(), n is included in the outputFirst line.nSecond line. print(s) # with print(), n produces a new lineFirst line.Second line.如果你前面带有 的字符被当作特殊字符,你可以使用 原始字符串,方法是在第一个引号前面加上一个r : print(C:somename) # here n mea
32、ns newline!C:someame print(rC:somename) # note the r before the quoteC:somename字符串文本能够分成多行。一种方法是使用三引号:“.“ 或者 .。行尾换行符会被自动包含到字符串中,但是可以在行尾加上 来避免这个行为。下面的示例: 可以使用反斜杠为行结尾的连续字符串,它表示下一行在逻辑上是本行的后续内容:print(“Usage: thingy OPTIONSh Display this usage messageH hostname Hostname to connect to“)将生成以下输出(注意,没有开始的第一行
33、):Usage: thingy OPTIONSh Display this usage messageH hostname Hostname to connect to字符串可以由 + 操作符连接(粘到一起),可以由 * 表示重复: # 3 times un, followed by ium 3 * un + iumunununium相邻的两个字符串文本自动连接在一起。: Py thonPython它只用于两个字符串文本,不能用于字符串表达式: prefix = Py prefix thon # cant concatenate a variable and a string literal.
34、SyntaxError: invalid syntax (un * 3) ium.SyntaxError: invalid syntax如果你想连接多个变量或者连接一个变量和一个字符串文本,使用 + : prefix + thonPython这个功能在你想切分很长的字符串的时候特别有用: text = (Put several strings within parentheses to have them joined together.) textPut several strings within parentheses to have them joined together.字符串也可
35、以被截取(检索)。类似于 C ,字符串的第一个字符索引为 0 。Python没有单独的字符类型;一个字符就是一个简单的长度为1的字符串。: word = Python word0 # character in position 0P word5 # character in position 5n索引也可以是负数,这将导致从右边开始计算。例如: word1 # last charactern word2 # secondlast charactero word6P请注意 -0 实际上就是 0,所以它不会导致从右边开始计算。除了索引,还支持 切片。索引用于获得单个字符,切片 让你获得一个子字符串
36、: word0:2 # characters from position 0 (included) to 2 (excluded)Py word2:5 # characters from position 2 (included) to 5 (excluded)tho注意,包含起始的字符,不包含末尾的字符。这使得 s:i + si: 永远等于 s : word:2 + word2:Python word:4 + word4:Python切片的索引有非常有用的默认值;省略的第一个索引默认为零,省略的第二个索引默认为切片的字符串的大小。: word:2 # character from the b
37、eginning to position 2 (excluded)Py word4: # characters from position 4 (included) to the endon word2: # characters from the secondlast (included) to the endon有个办法可以很容易地记住切片的工作方式:切片时的索引是在两个字符 之间 。左边第一个字符的索引为0,而长度为 n 的字符串其最后一个字符的右界索引为 n。例如:+| P | y | t | h | o | n |+0 1 2 3 4 5 66 5 4 3 2 1文本中的第一行数字给
38、出字符串中的索引点 0.6。第二行给出相应的负索引。切片是从 i 到 j 两个数值标示的边界之间的所有字符。对于非负索引,如果上下都在边界内,切片长度就是两个索引之差。例如,word1:3 是 2 。试图使用太大的索引会导致错误: word42 # the word only has 6 charactersTraceback (most recent call last):File “, line 1, in IndexError: string index out of rangePython 能够优雅地处理那些没有意义的切片索引:一个过大的索引值(即下标值大于字符串实际长度)将被字符串实
39、际长度所代替,当上边界比下边界大时(即切片左值大于右值)就返回空字符串: word4:42on word42:Python字符串不可以被更改 它们是 不可变的 。因此,赋值给字符串索引的位置会导致错误: word0 = J.TypeError: str object does not support item assignment word2: = py.TypeError: str object does not support item assignment如果你需要一个不同的字符串,你应该创建一个新的: J + word1:Jython word:2 + pyPypy内置函数 len()
40、 返回字符串长度: s = supercalifragilisticexpialidocious len(s)34See alsoText Sequence Type str字符串是 序列类型 的例子,它们支持这种类型共同的操作。String Methods字符串和Unicode字符串都支持大量的方法用于基本的转换和查找。String Formatting这里描述了使用 str.format() 进行字符串格式化的信息。String Formatting Operations这里描述了旧式的字符串格式化操作,它们在字符串和Unicode字符串是 % 操作符的左操作数时调用。3.1.3. 列表P
41、ython 有几个 复合 数据类型,用于表示其它的值。最通用的是 list (列表) ,它可以写作中括号之间的一列逗号分隔的值。列表的元素不必是同一类型: squares = 1, 4, 9, 16, 25 squares1, 4, 9, 16, 25就像字符串(以及其它所有内建的 序列 类型)一样,列表可以被索引和切片: squares0 # indexing returns the item1 squares125 squares3: # slicing returns a new list9, 16, 25所有的切片操作都会返回一个包含请求的元素的新列表。这意味着下面的切片操作返回列表一
42、个新的(浅)拷贝副本: squares:1, 4, 9, 16, 25列表也支持连接这样的操作: squares + 36, 49, 64, 81, 1001, 4, 9, 16, 25, 36, 49, 64, 81, 100不像 不可变的 字符串,列表是 可变的,它允许修改元素: cubes = 1, 8, 27, 65, 125 # somethings wrong here 4 * 3 # the cube of 4 is 64, not 65!64 cubes3 = 64 # replace the wrong value cubes1, 8, 27, 64, 125你还可以使用 a
43、ppend() 方法 (后面我们会看到更多关于列表的方法的内容)在列表的末尾添加新的元素: cubes.append(216) # add the cube of 6 cubes.append(7 * 3) # and the cube of 7 cubes1, 8, 27, 64, 125, 216, 343也可以对切片赋值,此操作可以改变列表的尺寸,或清空它: letters = a, b, c, d, e, f, g lettersa, b, c, d, e, f, g # replace some values letters2:5 = C, D, E lettersa, b, C,
44、D, E, f, g # now remove them letters2:5 = lettersa, b, f, g # clear the list by replacing all the elements with an empty list letters: = letters内置函数 len() 同样适用于列表: letters = a, b, c, d len(letters)4允许嵌套列表(创建一个包含其它列表的列表),例如: a = a, b, c n = 1, 2, 3 x = a, n xa, b, c, 1, 2, 3 x0a, b, c x01b3.2. 编程的第一步
45、当然,我们可以使用 Python 完成比二加二更复杂的任务。例如,我们可以写一个生成 菲波那契 子序列的程序,如下所示: # Fibonacci series:. # the sum of two elements defines the next. a, b = 0, 1 while b , = , = 和 !=。循环 体 是 缩进 的:缩进是 Python 组织语句的方法。Python (还)不提供集成的行编辑功能,所以你要为每一个缩进行输入 TAB 或空格。实践中建议你找个文本编辑来录入复杂的 Python 程序,大多数文本编辑器提供自动缩进。交互式录入复合语句时,必须在最后输入一个空行
46、来标识结束(因为解释器没办法猜测你输入的哪一行是最后一行),需要 注意的是同一个语句块中的每一行必须缩进同样数量的空白。关键字 print() 语句输出给定表达式的值。它控制多个表达式和字符串输出为你想要字符串(就像我们在前面计算器的例子中那样)。字符串打印时不用引号包围,每两个子项之间插入空间,所以你可以把格式弄得很漂亮,像这样: i = 256*256 print(The value of i is, i)The value of i is 65536用一个逗号结尾就可以禁止输出换行: a, b = 0, 1 while b x = int(input(“Please enter an i
47、nteger: “)Please enter an integer: 42 if x # Measure some strings:. words = cat, window, defenestrate for w in words:. print(w, len(w).cat 3window 6defenestrate 12在迭代过程中修改迭代序列不安全(只有在使用链表这样的可变序列时才会有这样的情况)。如果你想要修改你迭代的序列(例如,复制选择项),你可以迭代它的复本。使用切割标识就可以很方便的做到这一点: for w in words: # Loop over a slice copy of the entire list. if len(w) 6:. words.insert(0, w). wordsdefenestrate, cat, window, defenestrate4.3. range() 函数如果你需要一个数值序列,内置函数 range() 会很方便,它生成一个等差级数链表: for i in range(5):. print(i).01234range(10) 生成了一个包含 10 个值的链表,它用链表的索引值填充了这个长度为10 的列表,所生成的链表中不包括范围中的结