
第1篇 基础知识
第1章 Python概述
Python是一种解释型、面向对象、动态数据类型的高级程序设计语言,是最受欢迎的程序设计语言之一。本章介绍Python语言的基本情况。
1.1 初识Python
首先来了解一下什么是Python,它又有哪些特性。
1.1.1 什么是Python
Python于20世纪80年代末由荷兰人Guido Van Rossum(见图1-1)设计实现。

图1-1 Guido Van Rossum
1991年,Van Rossum公布了0.9.0版本的Python源代码。此版本已经实现了类、函数以及列表、字典和字符串等基本的数据类型。本书将在第2章介绍基本数据类型,第3章介绍函数,第4章介绍类。
0.9.0版本还集成了模块系统,Van Rossum将模块描述为Python主要的编程单元。
1994年,Python 1.0发布。1.0版新增了函数式工具。关于函数式编程将在第6章介绍。
Python 2.0集成了列表推导式(List Comprehension),具体情况将在第2章介绍。
Python 3.0也称为Python 3000或Python 3K。相对于Python的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0在设计的时候没有考虑向下兼容。Python 3.0的主要设计思想就是通过移除传统的做事方式从而减少特性的重复。很多针对早期Python版本设计的程序都无法在Python 3.0上正常运行。为了照顾现有程序,Python 2.6作为一个过渡版本,基本使用了Python 2.x的语法和库,同时考虑了向Python 3.0的迁移,允许使用部分Python 3.0的语法与函数。基于早期Python版本而能正常运行于Python 2.6并无警告的程序,可以通过一个2 to 3的转换工具无缝迁移到Python 3.0。本书内容基于Python 3.6.4。
经过多年的发展,Python已经成为非常流行的热门程序开发语言。到底有多流行?让我们看看知名的TIOBE开发语言排行榜。TIOBE编程语言排行榜是编程语言流行趋势的一个指标,每月更新,这份排行榜排名基于互联网有经验的程序员、课程和第三方厂商的数量。排名使用著名的搜索引擎(诸如Google、MSN、Yahoo!、Wikipedia、YouTube以及Baidu等)进行计算。该排行榜可以用来衡量程序员的编程技能是否与时俱进,也可以在开发新系统时作为一个语言选择依据。
2018年3月的TIOBE排行榜显示,Python排名第4,如图1-2所示。

图1-2 2018年3月的TIOBE排行榜
可以看到,排名前6的编程语言依次是Java、C、C++、Python、C#、Visual Basic.NET,由此可见Python的流行程度。
1.1.2 Python的特性
下面简要介绍一下Python的基本特性。
(1)简单易学:Python语言很简洁,语法也很简单,只需要掌握基本的英文单词就可以读懂Python程序。这对初学者无疑是个好消息。因为简单就意味着易学,可以很轻松地上手。
(2)Python是开源的、免费的:开源是开放源代码的简称。也就是说,用户可以免费获取Python的发布版本源代码,阅读、甚至修改源代码。很多志愿者将自己的源代码添加到Python中,从而使其日臻完善。
(3)Python是高级语言:与Java一样,Python不依赖任何硬件系统,因此属于高级开发语言。在使用Python开发应用程序时,不需要关注低级的硬件问题,如内存管理。
(4)高可移植性:由于开源的缘故,Python兼容很多平台。如果在编程时多加留意系统依赖的特性,Python程序无需进行任何修改,就可以在各种平台上运行。Python支持的平台包括Linux、Windows、FreeBSD、Macintosh、Solaris、OS/2、Amiga、AROS、AS/400、BeOS、OS/390、z/OS、Palm OS、QNX、VMS、Psion、Acorn RISC OS、VxWorks、PlayStation、Sharp Zaurus、Windows CE和PocketPC等。
(5)Python是解释型语言:计算机不能直接理解高级语言,只能直接理解机器语言。使用解释型语言编写的源代码不是直接翻译成机器语言,而是先翻译成中间代码,再由解释器对中间代码进行解释运行。因此使用Python编写的程序不需要翻译成二进制的机器语言,而是直接从源代码运行,即运行Python程序时,由Python解释器将源代码转换为字节码(中间代码),然后再执行这些字节码。过程如图1-3所示。

图1-3 Python程序的运行过程
(6)Python全面支持面向对象的程序设计思想:面向对象是目前最流行的程序设计思想。所谓面向对象,就是基于对象的概念,以对象为中心,类和继承为构造机制,认识了解刻画客观世界以及开发出相应的软件系统。关于面向对象的程序设计思想的细节将在第4章介绍。
(7)高可扩展性:如果希望一段代码可以很快地运行,或者不希望公开一个算法,则可以使用C或C++编写这段程序,然后在Python中调用,从而实现对Python程序的扩展。
(8)支持嵌入式编程:可以将Python程序嵌入到C/C++程序中,从而为C/C++程序提供处理脚本的能力。
(9)功能强大的开发库:Python标准库非常庞大,可以实现包括正则表达式、文档生成、单元测试、线程、数据库、浏览器、CGI、FTP、E-mail、XML、XML-RPC、HTML、加密、GUI(图形用户界面)等功能。除了标准库外,Python还有很多功能强大的库,本书后面部分会介绍这些库的具体情况。
1.2 开始Python编程
本节将介绍如何配置Python开发的环境,并介绍如何编写一个简单的Python程序。通过对本节的学习,读者就可以开始Python编程。
1.2.1 下载和安装Python
访问网址https://www.python.org/downloads/,可以下载Python,如图1-4所示。

图1-4 下载Python
在编写本书(第2版)时,Python for Windows有2个最新版本,2.0系列的最新版本为Python 2.7.14,3.0系列的最新版本为Python 3.6.4。本书内容基于Python 3.6.4。
单击Download Python 3.6.4按钮,下载后会得到python-3.6.4.exe。双击python-3.6.4.exe,即可按照向导安装Python 3.6.4。
在Windows中安装后,“开始”菜单的“所有程序”中会出现一个Python 3.6分组。单击其下面的Python 3.6菜单项,就可以打开Python命令窗口,如图1-5所示。也可以通过打开Windows命令窗口,然后运行Python命令,来打开Python命令窗口。

图1-5 Python安装成功后打开Python命令窗口
Python命令实际上就是Python的解释器。在>>>后面输入Python程序,按Enter键后即可被解释执行。例如,输入下面的代码,可以打印“我是Python”,运行结果如图1-6所示。

图1-6 打印“我是Python”的结果
print('我是Python')
print()函数用于输出数据,关于函数的具体情况将在第3章中介绍。按Ctrl+Z组合键可以退出Python环境。
1.2.2 执行Python脚本文件
1.2.1节介绍了在命令行里面执行Python程序的方法。这正是解释型语言的特点,语句可以一行一行地解释执行,不需要编译生成一个exe文件。但这也不是程序员所习惯的编程方式,比较大的应用程序都是存放在一个文件中,然后一起执行的。当然,Python也可以这样,Python脚本文件的扩展名为.py。
【例1-1】 创建一个文件MyfirstPython.py,使用记事本编辑它的内容如下。
# My first Python program print('I am Python')
保存后,打开命令窗口。切换到MyfirstPython.py所在的目录,然后执行下面的命令。
python MyfirstPython.py
运行结果如下。
I am Python
#是Python的注释符,后面的内容为注释信息不会被执行。“I am Python”是一个字符串。关于字符串的具体情况将在第2章介绍。
1.2.3 Python语言的基本语法
本节介绍Python语言的基本语法,这些都是日后编写Python程序需要了解和注意的。
1. Python语句
Python程序由Python语句组成,通常一行编写一个语句。例如,
print('Hello,') print('I am Python')
Python语句可以没有结束符,不像C或C#那样在语句后面必须有分号(;)表示结束。当然,Python程序中也可以根据习惯在语句后面使用分号(;)。
也可以把多个语句写在一行,此时就要在语句后面加上分号(;)表示结束。
【例1-2】 把多个语句写在一行的例子。
print('Hello,'); print('I am Python');
2. 缩进
缩进指在代码行前面添加空格(一般为4个空格)或按Tab键,这样做可以使程序更有层次、更有结构感,从而使程序更易读。以上两种缩进方法不能混用,建议使用4个空格方式实现缩进。
在Python程序中,缩进不是任意的。平级的语句行(代码块)的缩进必须相同。
【例1-3】 语句缩进的例子。
print('Hello,'); print('I am Python');
运行这段程序的结果如下。
File " 例1-3.py", line 2 print('I am Python'); ^ ndentationError: unexpected indent
从输出的错误信息中可以看到,unexpected indent表明缩进格式不对。因为第2行语句的开始有1个空格。可见,Python的缩进规定是很严谨的。
1.2.4 下载和安装Pywin32
Python是跨平台的编程语言,兼容很多平台。本书内容基于Windows平台,Pywin32是Windows平台下的Python扩展库,提供了很多与Windows系统操作相关的模块。本节介绍下载和安装Pywin32的方法。
访问网址http://sourceforge.net/projects/pywin32/,可以下载Pywin32安装包。
网站页面如图1-7所示。单击Browse All Files超链接,可以打开选择产品页面,如图1-8所示。

图1-7 Pywin32项目主页

图1-8 选择产品页面
单击Pywin32目录,可以打开选择Pywin32版本的页面,如图1-9所示。单击最新的Pywin32版本超链接,可以打开下载文件列表页,如图1-10所示。

图1-9 选择Pywin32版本

图1-10 下载文件列表页面
在笔者编写本书(第2版)时,Pywin32的最新版本为221。根据Python的版本选择要下载的安装包。例如,本书使用的是Python 3.6.4,因此单击pywin32-221.win64-py3.6.exe超链接,可以下载得到Pywin32的安装包pywin32-221.win64-py3.6.exe。
提示
当读者阅读本书时,下载页面和Pywin32的最新版本可能都会发生变化。读者可以参照上面的内容自行查找,也可以通过搜索引擎搜索下载Pywin32的相关页面。本书的源代码包里也提供了pywin32-221.zip,读者可以直接使用。
运行pywin32-221.win64-py3.6.exe,就可以安装Pywin32。首先打开欢迎窗口,如图1-11所示。单击“下一步”按钮,打开选择目录窗口,如图1-12所示。

图1-11 欢迎窗口

图1-12 选择目录窗口
安装程序会从注册表中自动获取Python 3.6的安装目录,读者也可以手动设置。设置完成后,单击“下一步”按钮,打开准备安装窗口,再单击“下一步”按钮即可开始安装。安装完成后,会打开完成窗口。
1.3 Python文本编辑器IDLE
Python是一种脚本语言,它并没有提供一个官方的开发环境,需要用户自主选择编辑工具。
1.3.1 打开IDLE
Python对文本编辑器没有特殊要求,完全可以使用Windows记事本编辑Python程序。但是Windows记事本的功能毕竟太过简单,而且没有对Python的特殊支持,因此不建议使用。
本节介绍Python自带的文本编辑器IDLE。IDLE的启动文件是idle.bat,它位于C:\Python34\Lib\idlelib目录下。运行idle.bat,即可打开文本编辑器IDLE,如图1-13所示。也可以在开始菜单的所有程序中,选择Python 3.6分组下面的IDLE(Python 3.6 64 bit)菜单项,打开IDLE窗口。

图1-13 文本编辑器IDLE
稍微有点遗憾的是,IDLE没有汉化版。不过对于学习Python编程的读者来说,IDLE菜单里的英文很简单。
1.3.2 新建Python脚本
在菜单里依次选择File/New File(或按【Ctrl+N】组合键)即可新建Python脚本,窗口标题显示脚本名称,初始时为Untitled,也就是还没有保存Python脚本,如图1-14所示。

图1-14 新建Python脚本的窗口
1.3.3 保存Python脚本
在菜单里依次选择File/Save File(或按【Ctrl+S】组合键)即可保存Python脚本。如果是第一次保存,则会弹出保存文件对话框,要求用户输入保存的文件名。
1.3.4 打开Python脚本
在菜单里依次选择File/Open File(或按【Ctrl+O】组合键)会弹出打开文件对话框,要求用户选择要打开的.py文件名。
也可以用鼠标右键单击.py文件,在快捷菜单中选择Edit with IDLE,可直接打开IDLE窗口编辑该脚本。
1.3.5 语法高亮
IDLE支持Python的语法高亮,也就是说,能够以彩色标识出Python语言的关键字,告诉开发人员这个词的特殊作用。例如,在IDLE查看【例1-1】,注释显示为红色,print显示为紫色,字符串显示为绿色。因为本书图片为灰度图,不能体现语法高亮的效果,还是留待读者上机实习时自己体会吧。
1.3.6 自动完成
自动完成指用户在输入单词的开头部分后IDLE可以根据语法或上下文自动完成后面的部分。依次选择Edit/ Expand word菜单项,或者按下【Alt+/】组合键,即可实现自动完成。例如,输入pr后按下【Alt+/】组合键即可自动完成print。
也可以输入Python保留字(常量名或函数名等)的开头,在菜单里依次选择Edit/Show completetions(或按下【Ctrl+空格键】),将会弹出提示框。不过【Ctrl+空格键】与切换输入法的功能键之间存在冲突。例如,输入p然后选择Edit/Show completetions,提示框如图1-15所示。

图1-15 自动完成提示框
可以从提示列表中做出选择,实现自动完成。
1.3.7 语法提示
IDLE还可以显示语法提示帮助程序员完成输入。例如,输入“print(”,IDLE会弹出一个语法提示框,显示print()函数的语法,如图1-16所示。

图1-16 IDLE的语法提示
1.3.8 运行Python程序
在菜单里依次选择Run / Run Module(或按下F5键),可以在IDLE中运行当前的Python程序。例如,运行【例1-2】的界面如图1-17所示。

图1-17 运行例1-2的界面
如果程序中有语法错误,运行时会弹出一个invalid syntax提示。然后将会有一个浅红色方块定位在错误处。例如,运行下面的程序:
print(,'Hello,');
在print ()函数中多了一个逗号。定位错误的界面如图1-18所示。

图1-18 运行时定位在错误处
可以看到,在多出的逗号处有一个浅红色方块。
1.3.9 IDLE的菜单项
因为IDLE没有中文版,所以这里介绍一下它的常用菜单项,如表1-1所示。
表1-1 IDLE的常用菜单项


习题
一、选择题
1. 下面不属于Python特性的是( )。
A. 简单易学
B. 开源的、免费的
C. 属于低级语言
D. 高可移植性
2. Python脚本文件的扩展名为( )。
A. .python
B. .py
C. .pt
D. .pg
二、填空题
1. ______是Python的注释符。
2. Python自带的文本编辑器是______。
三、简答题
1. 简述Python程序的运行过程。
2. 简述Python的特性。