- 快召唤伙伴们来围观吧
- 微博 QQ QQ空间 贴吧
- 文档嵌入链接
- 复制
- 微信扫一扫分享
- 已成功复制到剪贴板
Python 教程
展开查看详情
1 . 简明 Python 教程 下一页 简明 Python 教程 Swaroop, C. H. 著 沈洁元 译 www.byteofpython.info 版本:1.20 A Byte of Python Copyright © 2003-2005 Swaroop C H 简明 Python 教程 《简明 Python 教程》为 "A Byte of Python" 的唯一指定简体中文译本,版权 © 2005 沈洁 元 本书依照 创作公用约定(署名-非派生作品-非商业用途) 发布。 概要 无论您刚接触电脑还是一个有经验的程序员,本书都将有助您学习使用Python语言。 目录表 前言 本书的读者 本书的由来 本书目前的状况 官方网站 约定条款 欢迎给我反馈 值得思考的一些东西 1. 介绍 简介 Python的特色 概括 为什么不使用Perl? 程序员的话 2. 安装Python Linux和BSD用户 Windows®用户 概括 3. 最初的步骤 简介 使用带提示符的解释器 挑选一个编辑器 使用源文件 输出 它如何工作 可执行的Python程序 获取帮助 概括 4. 基本概念 字面意义上的常量 数 字符串 变量 标识符的命名 数据类型 对象 输出 它如何工作 逻辑行与物理行 缩进 概括 5. 运算符与表达式 简介 运算符 运算符优先级 计算顺序 结合规律 表达式 使用表达式 概括 6. 控制流 简介 if语句 使用if语句 它如何工作 while语句 使用while语句 for循环 使用for语句 break语句 使用break语句 continue语句 使用continue语句 概括 7. 函数 简介 定义函数 函数形参 使用函数形参 局部变量 使用局部变量 使用global语句 默认参数值 使用默认参数值 关键参数 使用关键参数 return语句 使用字面意义上的语句 DocStrings 使用DocStrings 概括 8. 模块 简介 使用sys模块 字节编译的.pyc文件 from..import语句 模块的__name__ 使用模块的__name__ 制造你自己的模块 创建你自己的模块 from..import dir()函数 使用dir函数 概括 9. 数据结构 简介 列表 对象与类的快速入门 使用列表 元组 使用元组 元组与打印语句 字典 使用字典 序列 使用序列 引用 对象与引用 更多字符串的内容 字符串的方法 概括 10. 解决问题——编写一个Python脚本 问题 解决方案 版本一 版本二 版本三 版本四 进一步优化 软件开发过程 概括 11. 面向对象的编程 简介 self 类 创建一个类 对象的方法 使用对象的方法 __init__方法 使用__init__方法 类与对象的变量 使用类与对象的变量 继承 使用继承 概括 12. 输入/输出 文件 使用文件 储存器 储存与取储存 概括 13. 异常 错误 try..except 处理异常 引发异常 如何引发异常 try..finally 使用finally 概括 14. Python标准库 简介 sys模块 命令行参数 更多sys的内容 os模块 概括 15. 更多Python的内容 特殊的方法 单语句块 列表综合 使用列表综合 在函数中接收元组和列表 lambda形式 使用lambda形式 exec和eval语句 assert语句 repr函数 概括 16. 接下来学习什么? 图形软件 GUI工具概括 探索更多内容 概括 A. 自由/开放源码软件(FLOSS) B. 关于本书 后记 关于作者 关于译者 关于简体中文译本 C. 修订记录 时间表 术语表 表格 5.1 运算符与它们的用法 5.2 运算符优先级 15.1 一些特殊的方法 例子 3.1 使用带提示符的Python解释器 3.2 使用源文件 4.1 使用变量和字面意义上的常量 5.1 使用表达式 6.1 使用if语句 6.2 使用while语句 6.3 使用for语句 6.4 使用break语句 6.5 使用continue语句 7.1 定义函数 7.2 使用函数形参 7.3 使用局部变量 7.4 使用global语句 7.5 使用默认参数值 7.6 使用关键参数 7.7 使用字面意义上的语句 7.8 使用DocStrings 8.1 使用sys模块 8.2 使用模块的__name__ 8.3 如何创建你自己的模块 8.4 使用dir函数 9.1 使用列表 9.2 使用元组 9.3 使用元组输出 9.4 使用字典 9.5 使用序列 9.6 对象与引用 10.1 备份脚本——版本一 10.2 备份脚本——版本二 10.3 备份脚本——版本三(不工作!) 10.4 备份脚本——版本四 11.1 创建一个类 11.2 使用对象的方法 11.3 使用__init__方法 11.4 使用类与对象的变量 11.5 使用继承 12.1 使用文件 12.2 储存与取储存 13.1 处理异常 13.2 如何引发异常 14.1 使用sys.argv 15.1 使用列表综合 15.2 使用lambda形式 下一页 前言
2 . 简明 Python 教程 前言 上一页 本书的读者 下一页 前言 目录表 本书的读者 本书的由来 本书目前的状况 官方网站 约定条款 反馈 值得思考的一些东西 Python语言可能是第一种即简单又功能强大的编程语言。它不仅适合于初学者,也适合于专业 人员使用,更加重要的是,用Python编程是一种愉快的事。本身将帮助你学习这个奇妙的语 言,并且向你展示如何即快捷又方便地完成任务——真正意义上“为编程问题提供的完美解决 方案!” 本书的读者 本书可以作为Python编程语言的一本指南或者教程。它主要是为新手而设计,不过对于有经验 的程序员来说,它同样有用。 即便你对计算机的了解只是如何在计算机上保存文本文件,你都可以通过本书学习Python。如 果你有编程经验,你也可以使用本书学习Python。 如果你以前有编程经验,那么你将会对Python语言和其他你所钟爱的编程语言之间的区别感兴 趣。对此我为你指出了许多这样的区别。顺便提醒你,Python将很快成为你最喜欢的编程语 言! 上一页 上一级 下一页 简明 Python 教程 首页 本书的由来
3 . 简明 Python 教程 前言 上一页 本书的由来 下一页 本书的由来 我最初接触Python是当我需要为我的软件钻石写一个方便安装过程的安装程序的时候。我得在 Python和Perl语言中选择一个绑定Qt库。我在网上做了一些研究,偶然发现了一篇文章。那是 Eric S. Raymond(著名的电脑高手)谈Python如何成为他最喜欢地编程语言的一篇文章。我同 时发现PyQt绑定与Perl-Qt相比要出色得多,所以我选择了Python语言。 之后我开始寻找一本关于Python的优秀书籍。我竟然找不到!虽然我找到了一些O'Reilly的书, 不过它们不是太贵就是如同一本参考手册而不是一本指南。我最后使用了Python附带的文档, 不过它太简略了。那个文档确实很好的给出了Python的概念,不过不够全面。尽管最后我根据 我以前得编程经验掌握了那个文档,不过我觉得它完全不适合于新手。 大约在我首次使用Python语言的六个月之后,我安装了那时最新的Red Hat 9.0 Linux。在我玩弄 KWord应用程序的时候,我突然想写一点关于Python的东西。很快我就写了30多页,然后我开 始认真地想办法把它变成一本完整的书。经过 多次 的改进和重写,它终于成为了一本有用的 完整的Python语言学习指南。我把本书贡献给开源软件者们。 本书来自于我个人学习Python的笔记,不过我尽力让它更加适合别人的口味。 在开源精神的鼓舞下,我收到了许多建设性的建议和批评以及来自热心读者的反馈,它们使这 本书变得更加出色。 上一页 上一级 下一页 本书的读者 首页 本书目前的状况
4 . 简明 Python 教程 前言 上一页 本书目前的状况 下一页 本书目前的状况 本书目前仍然在进一步完善中。许多章节已经频繁地做了修改。然而本书已经十分成熟了,你 一定可以很容易地通过它学习Python。如果你觉得本书中有什么错误或者难懂的地方,请告诉 我。 本书将来计划增加更多的章节,包括wxPython,Twisted,有可能的话甚至还有Boa Constructor。 上一页 上一级 下一页 本书的由来 首页 官方网站
5 . 简明 Python 教程 前言 上一页 官方网站 下一页 官方网站 本书的官方网站是www.byteofpython.info。你可以在这个网站上在线阅读本书,也可以下载本 书的最新版本或给我反馈。 上一页 上一级 下一页 本书目前的状况 首页 约定条款
6 . 简明 Python 教程 前言 上一页 约定条款 下一页 约定条款 本书(原版)依照创作共用约定(署名-非商业作品-保持一致)发布。简单地说,你只要署上 我的名字,就可以免费复制、分发和展示本书。未得到我的允许,你禁止把本书用于商业目 的。你在修改本书的时候,必须清楚地标明所有做了改动的地方,你发布修改后的作品时也必 须遵照与本书相同的约定。 请访问创作公用约定的网站浏览约定全文,或者查看一个简单易懂的约定描述。那里还有一个 连环画似的约定条款的解释。 上一页 上一级 下一页 官方网站 首页 反馈
7 . 简明 Python 教程 前言 上一页 反馈 下一页 反馈 我尽了很大的力让这本书即生动又尽可能的准确。然而,如果你找到任何不太令你满意的地方 或者错误,或者是需要改进的地方,请告诉我以便我改正它们。你可以把它们通过 swaroop@byteofpython.info发送给我。 上一页 上一级 下一页 值得思考的一些 约定条款 首页 东西
8 . 简明 Python 教程 前言 上一页 值得思考的一些东西 下一页 值得思考的一些东西 有两种方式构建软件设计:一种是把软件做得很简单以至于明显找不到缺陷;另 一种是把它做得很复杂以至于找不到明显的缺陷。 ——C.A.R. Hoare 获得人生中的成功需要的专注与坚持不懈多过天才与机会。 ——C.W. Wendte 上一页 上一级 下一页 反馈 首页 第1章 介绍
9 . 简明 Python 教程 第1章 介绍 上一页 简介 下一页 第1章 介绍 目录表 简介 Python的特色 概括 为什么不使用Perl? 程序员的话 简介 Python语言是少有的一种可以称得上即简单又功能强大的编程语言。你将惊喜地发现Python语 言是多么地简单,它注重的是如何解决问题而不是编程语言的语法和结构。 Python的官方介绍是: Python是一种简单易学,功能强大的编程语言,它有高效率的高层数据结构,简 单而有效地实现面向对象编程。Python简洁的语法和对动态输入的支持,再加上 解释性语言的本质,使得它在大多数平台上的许多领域都是一个理想的脚本语 言,特别适用于快速的应用程序开发。 我会在下一节里详细地讨论Python的这些特点。 注释 Python语言的创造者Guido van Rossum是根据英国广播公司的节目“蟒蛇飞行马戏”命名这个 语言的,并非他本人特别喜欢蛇缠起它们的长身躯碾死动物觅食。 上一页 上一级 下一页 值得思考的一些 首页 Python的特色 东西
10 . 简明 Python 教程 第1章 介绍 上一页 Python的特色 下一页 Python的特色 简单 Python是一种代表简单主义思想的语言。阅读一个良好的Python程序就感觉像是在读英 语一样,尽管这个英语的要求非常严格!Python的这种伪代码本质是它最大的优点之 一。它使你能够专注于解决问题而不是去搞明白语言本身。 易学 就如同你即将看到的一样,Python极其容易上手。前面已经提到了,Python有极其简单 的语法。 免费、开源 Python是FLOSS(自由/开放源码软件)之一。简单地说,你可以自由地发布这个软件的 拷贝、阅读它的源代码、对它做改动、把它的一部分用于新的自由软件中。FLOSS是基 于一个团体分享知识的概念。这是为什么Python如此优秀的原因之一——它是由一群希 望看到一个更加优秀的Python的人创造并经常改进着的。 高层语言 当你用Python语言编写程序的时候,你无需考虑诸如如何管理你的程序使用的内存一类 的底层细节。 可移植性 由于它的开源本质,Python已经被移植在许多平台上(经过改动使它能够工作在不同平 台上)。如果你小心地避免使用依赖于系统的特性,那么你的所有Python程序无需修改 就可以在下述任何平台上面运行。 这些平台包括Linux、Windows、FreeBSD、Macintosh、Solaris、OS/2、Amiga、AROS、 AS/400、BeOS、OS/390、z/OS、Palm OS、QNX、VMS、Psion、Acom RISC OS、 VxWorks、PlayStation、Sharp Zaurus、Windows CE甚至还有PocketPC! 解释性 这一点需要一些解释。 一个用编译性语言比如C或C++写的程序可以从源文件(即C或C++语言)转换到一个你 的计算机使用的语言(二进制代码,即0和1)。这个过程通过编译器和不同的标记、选 项完成。当你运行你的程序的时候,连接/转载器软件把你的程序从硬盘复制到内存中 并且运行。 而Python语言写的程序不需要编译成二进制代码。你可以直接从源代码 运行 程序。在 计算机内部,Python解释器把源代码转换成称为字节码的中间形式,然后再把它翻译成 计算机使用的机器语言并运行。事实上,由于你不再需要担心如何编译程序,如何确保 连接转载正确的库等等,所有这一切使得使用Python更加简单。由于你只需要把你的 Python程序拷贝到另外一台计算机上,它就可以工作了,这也使得你的Python程序更加 易于移植。 面向对象 Python即支持面向过程的编程也支持面向对象的编程。在 面向过程 的语言中,程序是 由过程或仅仅是可重用代码的函数构建起来的。在 面向对象 的语言中,程序是由数据 和功能组合而成的对象构建起来的。与其他主要的语言如C++和Java相比,Python以一 种非常强大又简单的方式实现面向对象编程。 可扩展性 如果你需要你的一段关键代码运行得更快或者希望某些算法不公开,你可以把你的部分 程序用C或C++编写,然后在你的Python程序中使用它们。 可嵌入性 你可以把Python嵌入你的C/C++程序,从而向你的程序用户提供脚本功能。 丰富的库 Python标准库确实很庞大。它可以帮助你处理各种工作,包括正则表达式、文档生成、 单元测试、线程、数据库、网页浏览器、CGI、FTP、电子邮件、XML、XML-RPC、 HTML、WAV文件、密码系统、GUI(图形用户界面)、Tk和其他与系统有关的操作。 记住,只要安装了Python,所有这些功能都是可用的。这被称作Python的“功能齐 全”理念。 除了标准库以外,还有许多其他高质量的库,如wxPython、Twisted和Python图像库等 等。 概括 Python确实是一种十分精彩又强大的语言。它合理地结合了高性能与使得编写程序简单有趣的 特色。 上一页 上一级 下一页 为什么不使用 简介 首页 Perl?
11 . 简明 Python 教程 第1章 介绍 上一页 为什么不使用Perl? 下一页 为什么不使用Perl? 也许你以前并不知道,Perl是另外一种极其流行的开源解释性编程语言。 如果你曾经尝试过用Perl语言编写一个大程序,你一定会自己回答这个问题。在规模较小的时 候,Perl程序是简单的。它可以胜任于小型的应用程序和脚本,“使工作完成”。然而,当你 想开始写一些大一点的程序的时候,Perl程序就变得不实用了。我是通过为Yahoo编写大型Perl 程序的经验得出这样的总结的! 与Perl相比,Python程序一定会更简单、更清晰、更易于编写,从而也更加易懂、易维护。我 确实也很喜欢Perl,用它来做一些日常的各种事情。不过当我要写一个程序的时候,我总是想 到使用Python,这对我来说已经成了十分自然的事。Perl已经经历了多次大的修正和改变,遗 憾的是,即将发布的Perl 6似乎仍然没有在这个方面做什么改进。 我感到Perl唯一也是十分重要的优势是它庞大的CPAN库——综合Perl存档网络。就如同这个名 字所指的意思一样,这是一个巨大的Perl模块集,它大得让人难以置信——你几乎用这些模块 在计算机上做任何事情。Perl的模块比Python多的原因之一是Perl拥有更加悠久的历史。或许我 会在comp.lang.python上建议把Perl模块移植到Python上的计划。 另外,新的Parrot虚拟机按设计可以运行完全重新设计的Perl 6也可以运行Python和其他解释性 语言如Ruby、PHP和Tcl等等。这意味着你将来 或许 可以在Python上使用所有Perl的模块。这将 成为两全其美的事——强大的CPAN库与强大的Python语言结合在一起。我们将拭目以待。 上一页 上一级 下一页 Python的特色 首页 程序员的话
12 . 简明 Python 教程 第1章 介绍 上一页 程序员的话 下一页 程序员的话 读一下像ESR这样的超级电脑高手谈Python的话,你会感到十分有意思: ● Eric S. Raymond是《The Cathedral and the Bazaar》的作者、“开放源码”一词的提出人。 他说Python已经成为了他最喜爱的编程语言。这篇文章也是促使我第一次接触Python的 真正原动力。 ● Bruce Eckel著名的《Thinking in Java》和《Thinking in C++》的作者。他说没有一种语言 比得上Python使他的工作效率如此之高。同时他说Python可能是唯一一种旨在帮助程序 员把事情弄得更加简单的语言。请阅读完整的采访以获得更详细的内容。 ● Peter Norvig是著名的Lisp语言书籍的作者和Google公司的搜索质量主任(感谢Guido van Rossum告诉我这一点)。他说Python始终是Google的主要部分。事实上你看一下Google 招聘的网页就可以验证这一点。在那个网页上,Python知识是对软件工程师的一个必需 要求。 ● Bruce Perens是OpenSource.org和UserLinux项目的一位共同创始人。UserLinux旨在创造一 个可以被多家发行商支持标准的Linux发行版。Python击败了其它竞争对手如Perl和Ruby 成为UserLinux支持的主要编程语言。 上一页 上一级 下一页 为什么不使用 首页 第2章 安装Python Perl?
13 . 简明 Python 教程 第2章 安装Python 上一页 Linux和BSD用户 下一页 第2章 安装Python 目录表 Linux和BSD用户 Windows®用户 概括 Linux和BSD用户 如果你正在使用一个Linux的发行版比如Fedora或者Mandrake或者其他(你的选择),或者一个 BSD系统比如FreeBSD,那么你可能已经在你的系统里安装了Python。 要测试你是否已经随着你的Linux包安装了Python,你可以打开一个shell程序(就像konsole或 gnome-terminal)然后输入如下所示的命令python -V。 $ python -V Python 2.3.4 注释 $是shell的提示符。根据你的操作系统的设置,它可能与你那个不同,因此我只用$符号表示提 示符。 如果你看见向上面所示的那样一些版本信息,那么你已经安装了Python了。 如果你得到像这样的消息: $ python -V bash: python: command not found 那么你还没有安装Python。这几乎不可能,只是极其偶尔才会遇到。 在这种情况下,你有两种方法在你的系统上安装Python。 ● 利用你的操作系统附带的包管理软件安装二进制包,比如Fedora Linux的yum、 Mandrake Linux的urpmi、Debian Linux的apt-get、FreeBSD的pkg_add等等。注意,使用这 种方法的话,你需要连接因特网。 你也可以从别的地方下载二进制包然后拷贝到你的PC中安装。 ● 你可以从源代码编译Python然后安装。在网站上有编译的指令。 上一页 上一级 下一页 程序员的话 首页 Windows®用户
14 . 简明 Python 教程 第2章 安装Python 上一页 Windows®用户 下一页 Windows®用户 Windows®用户可以访问Python.org/download,从网站上下载最新的版本(在写本书的时候, 最新版本是2.3.4版)。它的大小大约是9.4MB,与其他大多数语言相比是十分紧凑的。安装过 程与其他Windows软件类似。 提示 即便安装程序为你提供了不检查 可选 组件的选项,你也不要不作任何检查!有些组件对你很 有用,特别是集成开发环境。 有趣的是,大约70%的Python下载是来自Windows用户的。当然,这并不能说明问题,因为几 乎所有的Linux用户已经在安装系统的时候默认安装了Python。 在Windows命令行中使用Python 如果你想要从Windows命令行调用Python,那么你需要先正确的设置PATH变量。 对于Windows 2000、XP、2003,点击控制面板->系统->高级->环境变量。在“系统变量”表单 中点击叫做PATH的变量,然后编辑这个变量,把;C:\Python23加到它的结尾。当然,是Python 所在的正确目录名。 对于较旧版本的Windows,把下面这行加到文件C:\AUTOEXEC.BAT中:PATH=%PATH%;C: \Python23,然后重新启动系统。对于Windows NT,则使用AUTOEXEC.NT文件。 上一页 上一级 下一页 Linux和BSD用户 首页 概括
15 . 简明 Python 教程 第2章 安装Python 上一页 概括 下一页 概括 对于Linux系统,很可能你已经在你的系统里安装了Python。否则,你可以通过你的发行版附 带的包管理软件安装Python。对于Windows系统,安装Python就是下载安装程序然后双击它那 么简单。从现在起,我们将假设你已经在你的系统里安装了Python。 上一页 上一级 下一页 Windows®用户 首页 第3章 最初的步骤
16 . 简明 Python 教程 第3章 最初的步骤 上一页 简介 下一页 第3章 最初的步骤 目录表 简介 使用带提示符的解释器 挑选一个编辑器 使用源文件 输出 它如何工作 可执行的Python程序 获取帮助 概括 简介 我们将看一下如何用Python编写运行一个传统的“Hello World”程序。通过它,你将学会如何 编写、保存和运行Python程序。 有两种使用Python运行你的程序的方式——使用交互式的带提示符的解释器或使用源文件。我 们将学习这两种方法。 上一页 上一级 下一页 使用带提示符的 概括 首页 解释器
17 . 简明 Python 教程 第3章 最初的步骤 上一页 使用带提示符的解释器 下一页 使用带提示符的解释器 在命令行的shell提示符下键入python,启动解释器。现在输入print 'Hello World',然后按Enter 键。你应该可以看到输出的单词Hello World。 对于Windows用户,只要你正确的设置了PATH变量,你应该可以从命令行启动解释器。或者 你可以选择使用IDLE程序。IDLE是集成开发环境的缩写。点击开始->程序->Python 2.3->IDLE (Python GUI)。Linux用户也可以使用IDLE。 注意,>>>是你键入Python语句的提示符。 例3.1 使用带提示符的Python解释器 $ python Python 2.3.4 (#1, Oct 26 2004, 16:42:40) [GCC 3.4.2 20041017 (Red Hat 3.4.2-6.fc3)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> print 'hello world' hello world >>> 注意,Python会在下一行立即给出你输出!你刚才键入的是一句Python 语句 。我们使用print (不要惊讶)来打印你提供给它的值。这里,我们提供的是文本Hello World,它被迅速地打印 在屏幕上。 如何退出Python提示符 如果你使用的是Linux/BSD shell,那么按Ctrl-d退出提示符。如果是在Windows命令行中,则按 Ctrl-z再按Enter。 上一页 上一级 下一页 简介 首页 挑选一个编辑器
18 . 简明 Python 教程 第3章 最初的步骤 上一页 挑选一个编辑器 下一页 挑选一个编辑器 在我们开始讲述以源文件方式编写Python程序之前,我们需要一个编辑器来写源文件。挑选一 个编辑器确实是极其重要的。你挑选一个编辑器就如同你挑选一辆你将购买的轿车一样。一个 好的编辑器会帮助你方便地编写Python程序,使你地编程旅程更加舒适,帮助你更加快捷安全 地到达目的地(实现目标)。 对于编辑器的基本要求之一是语法加亮功能,利用这一功能,你的Python程序的不同部分被标 以不同的颜色,这样你可以更好 看清楚 你的程序,使它的运行显得形象化。 如果你使用Windows,那么我建议你使用IDLE。IDLE具备语法加亮功能,还有许多其他的功 能,比如允许你在IDLE中运行你的程序。特别值得注意的是:不要使用Notepad——它是一个 糟糕的选择,因为它没有语法加亮功能,而且更加重要的是,它不支持文本缩进。而我们将会 看到文本缩进对于我们来说极其重要。一个好的编辑器,比如IDLE(还有VIM)将会自动帮助 你做这些事情。 如果你使用Linux/FreeBSD,那么你有很多种选择。如果你是一位有经验的程序员,你一定已经 在使用VIM或者Emacs了。勿庸置疑,它们是两个功能最强大的编辑器。使用它们编写你的 Python程序,你将从中受益。我个人使用VIM编写我的大多数程序。如果你是一个初学编程的 人,那么你可以使用Kate,它也是我最喜欢的编辑器之一。只要你愿意花时间学习使用VIM或 Emacs,那么我强烈建议你一定要学习两者之一,因为从长远看来它们对你是极其有帮助的。 如果你还想寻找一下其他可供选择的编辑器,可以看一下详尽的Python编辑器列表,然后作出 你的选择。你也可以使用Python的IDE(集成开发环境)。请看一下详尽的支持Python的IDE列 表以获得详尽的信息。一旦你开始编写大型的Python程序,IDE确实很有用。 我再一次重申,请选择一个合适的编辑器——它能使编写Python程序变得更加有趣、方便。 上一页 上一级 下一页 使用带提示符的 首页 使用源文件 解释器
19 . 简明 Python 教程 第3章 最初的步骤 上一页 挑选一个编辑器 下一页 使用源文件 现在让我们重新开始编程。当你学习一种新的编程语言的时候,你编写运行的第一个程序通常 都是“Hello World”程序,这已经成为一种传统了。在你运行“Hello World”程序的时候,它 1 所做的事只是说声:“Hello World”。正如提出“Hello World”程序的Simon Cozens[ ]所 说:“它是编程之神的传统咒语,可以帮助你更好的学习语言。” 启动你选择的编辑器,输入下面这段程序,然后把它保存为helloworld.py。 例3.2 使用源文件 #!/usr/bin/python # Filename : helloworld.py print 'Hello World' (源文件:code/helloworld.py) 为了运行这个程序,请打开shell(Linux终端或者DOS提示符),然后键入命令python helloworld.py。如果你使用IDLE,请使用菜单Edit->Run Script或者使用键盘快捷方式Ctrl-F5。 输出如下所示。 输出 $ python helloworld.py Hello World 如果你得到的输出与上面所示的一样,那么恭喜!——你已经成功地运行了你的第一个Python 程序。 万一你得到一个错误,那么请确保你键入的程序 准确无误 ,然后再运行一下程序。注意 Python是大小写敏感的,即print与Print不一样——注意前一个是小写p而后一个是大写P。另 外,确保在每一行的开始字符前没有空格或者制表符——我们将在后面讨论为什么这点是重要 的。 它如何工作 让我们思考一下这个程序的前两行。它们被称作 注释 ——任何在#符号右面的内容都是注释。 注释主要作为提供给程序读者的笔记。 Python至少应当有第一行那样的特殊形式的注释。它被称作 组织行 ——源文件的头两个字符 是#!,后面跟着一个程序。这行告诉你的Linux/Unix系统当你 执行 你的程序的时候,它应该运 行哪个解释器。这会在下一节做详细解释。注意,你总是可以通过直接在命令行指定解释器, 从而在任何平台上运行你的程序。就如同命令python helloworld.py一样。 重要 在你的程序中合理地使用注释以解释一些重要的细节——这将有助于你的程序的读者轻松地理 解程序在干什么。记住,这个读者可能就是6个月以后的你! 跟在注释之后的是一句Python 语句 ——它只是打印文本“Hello World”。print实际上是一个 操作符,而“Hello World”被称为一个字符串——别担心我们会在后面详细解释这些术语。 [1]一位最主要的Perl6/Parrot高手,轰动的《开始Perl》一书的作者。 上一页 上一级 下一页 可执行的Python程 挑选一个编辑器 首页 序
20 . 简明 Python 教程 第3章 最初的步骤 上一页 可执行的Python程序 下一页 可执行的Python程序 这部分内容只对Linux/Unix用户适用,不过Windows用户可能也对程序的第一行比较好奇。首 先我们需要通过chmod命令,给程序可执行的许可,然后 运行 程序。 $ chmod a+x helloworld.py $ ./helloworld.py Hello World chmod命令用来 改变 文件的 模式 ,给系统中所有用户这个源文件的执行许可。然后我们可以 直接通过指定源文件的位置来执行程序。我们使用./来指示程序位于当前目录。 为了更加有趣一些,你可以把你的文件名改成仅仅helloworld,然后运行./helloworld。这样,这 个程序仍然可以工作,因为系统知道它必须用源文件第一行指定的那个解释器来运行程序。 只要知道程序的确切位置,你现在就可以运行程序了——但是如果你希望你的程序能够从各个 位置运行呢?那样的话,你可以把你的程序保存在PATH环境变量中的目录之一。每当你运行 任何程序,系统会查找列在PATH环境变量中的各个目录。然后运行那个程序。你只要简单地 把这个源文件复制到PATH所列目录之一就可以使你的程序在任何位置都可用了。 $ echo $PATH /opt/mono/bin/:/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/home/swaroop/bin $ cp helloworld.py /home/swaroop/bin/helloworld $ helloworld Hello World 我们能够用echo命令来显示PATH变量,用$给变量名加前缀以向shell表示我们需要这个变量的 值。我们看到/home/swaroop/bin是PATH变量中的目录之一。swaroop是我的系统中使用的用户 名。通常,在你的系统中也会有一个相似的目录。你也可以把你选择的目录添加到PATH变量 中去——这可以通过运行PATH=$PATH:/home/swaroop/mydir完成,其中“/home/swaroop/ mydir”是我想要添加到PATH变量中的目录。 当你想要在任何时间、任何地方运行你的程序的时候,这个方法十分有用。它就好像创造你自 己的指令,如同cd或其他Linux终端或DOS提示符命令那样。 提示 对于Python来说,程序、脚本或者软件都是指同一个东西。 上一页 上一级 下一页 使用源文件 首页 获取帮助
21 . 简明 Python 教程 第3章 最初的步骤 上一页 获取帮助 下一页 获取帮助 如果你需要某个Python函数或语句的快速信息帮助,那么你可以使用内建的help功能。尤其在 你使用带提示符的命令行的时候,它十分有用。比如,运行help(str)——这会显示str类的帮 助。str类用于保存你的程序使用的各种文本(字符串)。类将在后面面向对象编程的章节详细 解释。 注释 按q退出帮助。 类似地,你可以获取Python中几乎所有东西的信息。使用help()去学习更多关于help本身的东 西! 如果你想要获取关于如print那样操作符的帮助,那么你需要正确的设置PYTHONDOCS环境变 量。这可以在Linux/Unix中轻松地通过env命令完成。 $ env PYTHONDOCS=/usr/share/doc/python-docs-2.3.4/html/ python Python 2.3.4 (#1, Oct 26 2004, 16:42:40) [GCC 3.4.2 20041017 (Red Hat 3.4.2-6.fc3)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> help('print') 你应该注意到我特意在“print”上使用了引号,那样Python就可以理解我是希望获取关 于“print”的帮助而不是想要它打印东西。 注意,我使用的位置是在Fedora Core 3 Linux中的位置——它可能在不同的发行版和版本中有所 不同。 上一页 上一级 下一页 可执行的Python程 首页 概括 序
22 . 简明 Python 教程 第3章 最初的步骤 上一页 概括 下一页 概括 你现在应该可以方便地编写、保存和运行Python程序了。既然你是一个Python用户,让我们学 习更多Python的概念。 上一页 上一级 下一页 获取帮助 首页 第4章 基本概念
23 . 简明 Python 教程 第4章 基本概念 上一页 字面意义上的常量 下一页 第4章 基本概念 目录表 字面意义上的常量 数 字符串 变量 标识符的命名 数据类型 对象 输出 它如何工作 逻辑行与物理行 缩进 概括 仅仅打印“Hello World”就足够了吗?你应该想要做更多的事——你想要得到一些输入,然后 做操作,再从中得到一些输出。在Python中,我们可以使用常量和变量来完成这些工作。 字面意义上的常量 一个字面意义上的常量的例子是如同5、1.23、9.25e-3这样的数,或者如同'This is a string'、"It's a string!"这样的字符串。它们被称作字面意义上的,因为它们具备 字面 的意义——你按照它们 的字面意义使用它们的值。数2总是代表它自己,而不会是别的什么东西——它是一个常量, 因为不能改变它的值。因此,所有这些都被称为字面意义上的常量。 上一页 上一级 下一页 概括 首页 数
24 . 简明 Python 教程 第4章 基本概念 上一页 数 下一页 数 在Python中有4种类型的数——整数、长整数、浮点数和复数。 ● 2是一个整数的例子。 ● 长整数不过是大一些的整数。 ● 3.23和52.3E-4是浮点数的例子。E标记表示10的幂。在这里,52.3E-4表示52.3 * 10-4。 ● (-5+4j)和(2.3-4.6j)是复数的例子。 上一页 上一级 下一页 字面意义上的常 首页 字符串 量
25 . 简明 Python 教程 第4章 基本概念 上一页 字符串 下一页 字符串 字符串是 字符的序列 。字符串基本上就是一组单词。 我几乎可以保证你在每个Python程序中都要用到字符串,所以请特别留心下面这部分的内容。 下面告诉你如何在Python中使用字符串。 ● 使用单引号(') 你可以用单引号指示字符串,就如同'Quote me on this'这样。所有的空白,即空格和制 表符都照原样保留。 ● 使用双引号(") 在双引号中的字符串与单引号中的字符串的使用完全相同,例如"What's your name?"。 ● 使用三引号('''或""") 利用三引号,你可以指示一个多行的字符串。你可以在三引号中自由的使用单引号和双 引号。例如: '''This is a multi-line string. This is the first line. This is the second line. "What's your name?," I asked. He said "Bond, James Bond." ''' ● 转义符 假设你想要在一个字符串中包含一个单引号('),那么你该怎么指示这个字符串?例 如,这个字符串是What's your name?。你肯定不会用'What's your name?'来指示它,因为 Python会弄不明白这个字符串从何处开始,何处结束。所以,你需要指明单引号而不是 字符串的结尾。可以通过 转义符 来完成这个任务。你用\'来指示单引号——注意这个反 斜杠。现在你可以把字符串表示为'What\'s your name?'。 另一个表示这个特别的字符串的方法是"What's your name?",即用双引号。类似地,要在 双引号字符串中使用双引号本身的时候,也可以借助于转义符。另外,你可以用转义符 \\来指示反斜杠本身。 值得注意的一件事是,在一个字符串中,行末的单独一个反斜杠表示字符串在下一行继 续,而不是开始一个新的行。例如: "This is the first sentence.\ This is the second sentence." 等价于"This is the first sentence. This is the second sentence." ● 自然字符串 如果你想要指示某些不需要如转义符那样的特别处理的字符串,那么你需要指定一个自 然字符串。自然字符串通过给字符串加上前缀r或R来指定。例如r"Newlines are indicated by \n"。 ● Unicode字符串 Unicode是书写国际文本的标准方法。如果你想要用你的母语如北印度语或阿拉伯语写 文本,那么你需要有一个支持Unicode的编辑器。类似地,Python允许你处理Unicode文 本——你只需要在字符串前加上前缀u或U。例如,u"This is a Unicode string."。 记住,在你处理文本文件的时候使用Unicode字符串,特别是当你知道这个文件含有用 非英语的语言写的文本。 ● 字符串是不可变的 这意味着一旦你创造了一个字符串,你就不能再改变它了。虽然这看起来像是一件坏 事,但实际上它不是。我们将会在后面的程序中看到为什么我们说它不是一个缺点。 ● 按字面意义级连字符串 如果你把两个字符串按字面意义相邻放着,他们会被Python自动级连。例如,'What\'s' 'your name?'会被自动转为"What's your name?"。 给C/C++程序员的注释 在Python中没有专门的char数据类型。确实没有需要有这个类型,我相信你不会为此而烦恼。 给Perl/PHP程序员的注释 记住,单引号和双引号字符串是完全相同的——它们没有在任何方面有不同。 给正则表达式用户的注释 一定要用自然字符串处理正则表达式。否则会需要使用很多的反斜杠。例如,后向引用符可以 写成'\\1'或r'\1'。 上一页 上一级 下一页 数 首页 变量
26 . 简明 Python 教程 第4章 基本概念 上一页 变量 下一页 变量 仅仅使用字面意义上的常量很快就会引发烦恼——我们需要一种既可以储存信息 又可以对它 们进行操作的方法。这是为什么要引入 变量 。变量就是我们想要的东西——它们的值可以变 化,即你可以使用变量存储任何东西。变量只是你的计算机中存储信息的一部分内存。与字面 意义上的常量不同,你需要一些能够访问这些变量的方法,因此你给变量名字。 上一页 上一级 下一页 字符串 首页 标识符的命名
27 . 简明 Python 教程 第4章 基本概念 上一页 字面意义上的常量 下一页 标识符的命名 变量是标识符的例子。 标识符 是用来标识 某样东西 的名字。在命名标识符的时候,你要遵循 这些规则: ● 标识符的第一个字符必须是字母表中的字母(大写或小写)或者一个下划线(‘ _ ’)。 ● 标识符名称的其他部分可以由字母(大写或小写)、下划线(‘ _ ’)或数字(0-9)组 成。 ● 标识符名称是对大小写敏感的。例如,myname和myName不是一个标识符。注意前者中 的小写n和后者中的大写N。 ● 有效 标识符名称的例子有i、__my_name、name_23和a1b2_c3。 ● 无效 标识符名称的例子有2things、this is spaced out和my-name。 上一页 上一级 下一页 变量 首页 数据类型
28 . 简明 Python 教程 第4章 基本概念 上一页 数据类型 下一页 数据类型 变量可以处理不同类型的值,称为数据类型。基本的类型是数和字符串,我们已经讨论过它们 了。在后面的章节里面,我们会研究怎么用类创造我们自己的类型。 上一页 上一级 下一页 标识符的命名 首页 对象
29 . 简明 Python 教程 第4章 基本概念 上一页 对象 下一页 对象 记住,Python把在程序中用到的任何东西都称为 对象 。这是从广义上说的。因此我们不会 说“某某 东西 ”,我们说“某个 对象 ”。 给面向对象编程用户的注释 就每一个东西包括数、字符串甚至函数都是对象这一点来说,Python是极其完全地面向对象 的。 我们将看一下如何使用变量和字面意义上的常量。保存下面这个例子,然后运行程序。 如何编写Python程序 下面是保存和运行Python程序的标准流程。 1. 打开你最喜欢的编辑器。 2. 输入例子中的程序代码。 3. 用注释中给出的文件名把它保存为一个文件。我按照惯例把所有的Python程序都以扩展名. py保存。 4. 运行解释器命令python program.py或者使用IDLE运行程序。你也可以使用先前介绍的可执 行的方法。 例4.1 使用变量和字面意义上的常量 # Filename : var.py i=5 print i i=i+1 print i s = '''This is a multi-line string. This is the second line.''' print s (源文件:code/var.py) 输出 $ python var.py 5 6 This is a multi-line string. This is the second line. 它如何工作 下面来说明一下这个程序如何工作。首先我们使用赋值运算符(=)把一个字面意义上的常数5 赋给变量i。这一行称为一个语句。语句声明需要做某件事情,在这个地方我们把变量名i与值5 连接在一起。接下来,我们用print语句打印i的值,就是把变量的值打印在屏幕上。 然后我们对i中存储的值加1,再把它存回i。我们打印它时,得到期望的值6。 类似地,我们把一个字面意义上的字符串赋给变量s然后打印它。 给C/C++程序员的注释 使用变量时只需要给它们赋一个值。不需要声明或定义数据类型。 上一页 上一级 下一页 数据类型 首页 逻辑行与物理行