《零基础学Python》由浅入深,循序渐进,从零开始学Python语言,一点都不难
⊙ 编程基础、编程进阶"编程应用"项目实战"上机练习
⊙ 300个实例、64个练习题
超值、大容量DVD
⊙ 本书教学视频
⊙ 本书源代码
⊙ 本书教学PPT
本书技术支持
⊙ 论坛:www.rzchina.net
前言
及时篇 Python语言基础
第1章 进入Python的世界
1.1 Python的由来
1.2 Python的特色
1.3 及时个Python程序
1.4 搭建开发环境
1.4.1 Python的下载和安装
1.4.2 交互式命令行的使用
1.5 Python的开发工具
1.5.1 PyCharm的使用
1.5.2 Eclipse IDE的介绍
1.5.3 EditPlus编辑器环境的配置
1.6 不同平台下的Python
1.7 小结
1.8 习题
第2章 Python必须知道的基础语法
2.1 Python的文件类型
2.1.1 源代码
2.1.2 字节代码
2.1.3 优化代码
2.2 Python的编码规范
2.2.1 命名规则
2.2.2 代码缩进与冒号
2.2.3 模块导入的规范
2.2.4 使用空行分隔代码
2.2.5 正确的注释
2.2.6 语句的分隔
2.3 变量和常量
2.3.1 变量的命名
2.3.2 变量的赋值
2.3.3 局部变量
2.3.4 全局变量
2.3.5 常量
2.4 数据类型
2.4.1 数字
2.4.2 字符串
2.5 运算符与表达式
2.5.1 算术运算符和算术表达式
2.5.2 关系运算符和关系表达式
2.5.3 逻辑运算符和逻辑表达式
2.6 小结
2.7 习题
第3章 Python的控制语句
3.1 结构化程序设计
3.2 条件判断语句
3.2.1 if条件语句
3.2.2 if…elif…else判断语句
3.2.3 if语句也可以嵌套
3.2.4 switch语句的替代方案
3.3 循环语句
3.3.1 while循环
3.3.2 for循环
3.3.3 break和continue语句
3.4 结构化程序示例
3.5 小结
3.6 习题
第4章 Python数据结构
4.1 元组结构
4.1.1 元组的创建
4.1.2 元组的访问
4.1.3 元组的遍历
4.2 列表结构
4.2.1 列表的创建
4.2.2 列表的使用
4.2.3 列表的查找、排序、反转
4.2.4 列表实现堆栈和队列
4.3 字典结构
4.3.1 字典的创建
4.3.2 字典的访问
4.3.3 字典的方法
4.3.4 字典的排序、复制
4.3.5 全局字典——sys.modules模块
4.4 序列
4.5 小结
4.6 习题
第5章 模块与函数
5.1 Python程序的结构
5.2 模块
5.2.1 模块的创建
5.2.2 模块的导入
5.2.3 模块的属性
5.2.4 模块的内置函数
5.2.5 自定义包
5.3 函数
5.3.1 函数的定义
5.3.2 函数的参数
5.3.3 函数的返回值
5.3.4 函数的嵌套
5.3.5 递归函数
5.3.6 lambda函数
5.3.7 Generator函数
5.4 小结
5.5 习题
第6章 字符串与正则表达式
6.1 常见的字符串操作
6.1.1 字符串的格式化
6.1.2 字符串的转义符
6.1.3 字符串的合并
6.1.4 字符串的截取
6.1.5 字符串的比较
6.1.6 字符串的反转
6.1.7 字符串的查找和替换
6.1.8 字符串与日期的转换
6.2 正则表达式应用
6.2.1 正则表达式简介
6.2.2 使用re模块处理正则表达式
6.3 小结
6.4 习题
第7章 使用Python处理文件
7.1 文件的常见操作
7.1.1 文件的创建
7.1.2 文件的读取
7.1.3 文件的写入
7.1.4 文件的删除
7.1.5 文件的复制
7.1.6 文件的重命名
7.1.7 文件内容的搜索和替换
7.1.8 文件的比较
7.1.9 配置文件的访问
7.2 目录的常见操作
7.2.1 创建和删除目录
7.2.2 目录的遍历
7.3 文件和流
7.3.1 Python的流对象
7.3.2 模拟Java的输入、输出流
7.4 文件处理示例——文件属性浏览程序
7.5 小结
7.6 习题
第8章 面向对象编程
8.1 面向对象的概述
8.2 类和对象
8.2.1 类和对象的区别
8.2.2 类的定义
8.2.3 对象的创建
8.3 属性和方法
8.3.1 类的属性
8.3.2 类的方法
8.3.3 内部类的使用
8.3.4 __init__方法
8.3.5 __del__方法
8.3.6 垃圾回收机制
8.3.7 类的内置方法
8.3.8 方法的动态特性
8.4 继承
8.4.1 使用继承
8.4.2 抽象基类
8.4.3 多态性
8.4.4 多重继承
8.4.5 Mixin机制
8.5 运算符的重载
8.6 Python与设计模式
8.6.1 设计模式简介
8.6.2 设计模式示例——Python实现工厂方法
8.7 小结
8.8 习题
第9章 异常处理与程序调试
9.1 异常的处理
9.1.1 Python中的异常
9.1.2 try…except的使用
9.1.3 try…finally的使用
9.1.4 使用raise抛出异常
9.1.5 自定义异常
9.1.6 assert语句的使用
9.1.7 异常信息
9.2 使用自带IDLE调试程序
9.3 使用Easy Eclipse for Python调试程序
9.3.1 新建工程
9.3.2 配置调试
9.3.3 设置断点
9.4 小结
9.5 习题
第10章 Python 数据库编程
10.1 Python环境下的数据库编程
10.1.1 通过ODBC访问数据库
10.1.2 使用DAO对象访问数据库
10.1.3 使用ActiveX Data Object访问数据库
10.1.4 Python连接数据库的专用模块
10.2 使用Python的持久化模块读写数据
10.3 嵌入式数据库SQLite
10.3.1 SQLite的命令行工具
10.3.2 使用sqlite3模块访问SQLite数据库
10.4 小结
10.5 习题
第二篇 Python的GUI程序设计
第11章 Python的GUI开发
11.1 Python的GUI开发选择
11.1.1 认识Python内置的GUI库Tkinter
11.1.2 使用Tkinter进行开发
11.1.3 认识PyQT GUI库
11.1.4 使用PyQT GUI库进行开发
11.2 小结
11.3 习题
第12章 GUI编程与Tkinter相关组件介绍
12.1 GUI程序开发简介
12.2 Tkinter与主要组件
12.2.1 在程序中使用Tkinter
12.2.2 顶层窗口
12.2.3 标签
12.2.4 框架
12.2.5 按钮
12.2.6 输入框
12.2.7 单选按钮
12.2.8 复选按钮
12.2.9 消息
12.2.10 滚动条
12.2.11 列表框
12.3 Tkinter所有组件简介
12.4 小结
12.5 习题
第三篇 Python的Web开发
第13章 Python的HTML应用
13.1 HTML介绍
13.1.1 HTML的历史
13.1.2 SGML、HTML、XHTML、HTML5的关系
13.1.3 HTML的标签
13.1.4 HTML的框架组成
13.2 URL的处理
13.2.1 统一资源定位符URL
13.2.2 URL的解析
13.2.3 URL的拼合
13.2.4 URL的分解
13.2.5 URL的编解码
13.2.6 中文的编解码
13.2.7 查询参数的编码
13.3 CGI的使用
13.3.1 CGI介绍
13.3.2 获取CGI环境信息
13.3.3 解析用户的输入
13.4 获取HTML资源
13.4.1 使用urlopen和urlretrieve获取HTTP资源
13.4.2 分析返回资源的相关信息
13.4.3 自定义获取资源方式
13.4.4 使用http.client模块获取资源
13.5 HTML文档的解析
13.6 小结
13.7 习题
第14章 Python和XML
14.1 XML介绍
14.1.1 XML的演进历史
14.1.2 XML的优点和限制
14.1.3 XML技术的Python支持
14.2 XML文档概览和验证
14.2.1 XML文档的基础概念
14.2.2 XML文档的结构良好性验证
14.2.3 XML文档的有效性验证
14.3 分析XML文档结构
14.3.1 XML的元素和标签
14.3.2 元素的属性
14.3.3 XML的名字
14.3.4 字符实体
14.3.5 CDATA段
14.3.6 注释
14.3.7 处理指令
14.3.8 XML定义
14.4 使用SAX处理XML文档
14.4.1 SAX介绍
14.4.2 SAX处理的组成部分
14.5 使用DOM处理XML文档
14.5.1 DOM介绍
14.5.2 xml.dom模块中的接口操作
14.5.3 对XML文档的操作
14.6 小结
14.7 习题
第15章 Python的Web开发——Django框架的应用
15.1 常见的Web开发框架
15.1.1 Zope
15.1.2 TurboGears
15.1.3 Django
15.1.4 其他Web开发框架
15.1.5 根据自身所需选择合适的开发框架
15.2 MVC模式
15.2.1 MVC模式介绍
15.2.2 MVC模式的优缺点
15.2.3 Django框架中的MVC
15.3 Django开发环境的搭建
15.3.1 Django框架的安装
15.3.2 数据库的配置
15.4 Django框架的应用
15.4.1 Web应用的创建
15.4.2 Django中的开发服务器
15.4.3 创建数据库
15.4.4 生成Django应用
15.4.5 创建数据模型
15.4.6 URL设计
15.4.7 创建视图
15.4.8 模板系统
15.4.9 Django项目
15.5 Django框架的高级应用
15.5.1 管理界面
15.5.2 生成数据库数据
15.5.3 Session功能
15.5.4 国际化
15.6 小结
15.7 习题
第四篇 Python其他应用
第16章 敏捷方法学在Python中的应用——测试驱动开发
16.1 测试驱动开发
16.1.1 测试驱动开发模式
16.1.2 TDD的优势
16.1.3 TDD的使用步骤
16.2 unittest测试框架
16.2.1 unittest模块介绍
16.2.2 构建测试用例
16.2.3 构建测试固件
16.2.4 组织多个测试用例
16.2.5 构建测试套件
16.2.6 重构代码
16.2.7 执行测试
16.3 使用doctest进行测试
16.3.1 doctest模块介绍
16.3.2 构建可执行文档
16.3.3 执行doctest测试
16.4 小结
16.5 习题
第17章 Python中的进程和线程
17.1 进程和线程
17.1.1 进程和线程的概念
17.1.2 Python中对于进程和线程处理的支持
17.2 Python下的进程编程
17.2.1 进程运行环境
17.2.2 创建进程
17.2.3 终止进程
17.3 使用subprocess模块管理进程
17.3.1 使用Popen类管理进程
17.3.2 调用外部系统命令
17.3.3 替代其他进程创建函数
17.4 进程间的信号机制
17.4.1 信号的处理
17.4.2 信号使用的规则
17.5 多线程概述
17.5.1 什么是多线程
17.5.2 线程的状态
17.5.3 Python中的线程支持
17.6 生成和终止线程
17.6.1 使用_thread模块
17.6.2 使用threading.Thread类
17.7 管理线程
17.7.1 线程状态转移
17.7.2 主线程对子线程的控制
17.7.3 线程中的局部变量
17.8 线程之间的同步
17.8.1 临界资源和临界区
17.8.2 锁机制
17.8.3 条件变量
17.8.4 信号量
17.8.5 同步队列
17.8.6 线程同步小结
17.9 小结
17.10 习题
第18章 基于Python的系统管理
18.1 增强的交互式环境IPython
18.1.1 IPython介绍
18.1.2 IPython的安装
18.1.3 IPython的启动
18.1.4 IPython的环境配置
18.2 和IPython的简单交互
18.2.1 IPython中的输入和输出
18.2.2 输出提示符的区别
18.2.3 输出提示符区别的原因
18.3 IPython中的magic函数
18.3.1 magic函数的使用和构造
18.3.2 目录管理
18.3.3 对象信息的收集
18.3.4 magic函数小结
18.4 IPython适合于系统管理的特点
18.4.1 Tab补全
18.4.2 历史记录功能
18.4.3 执行外部系统命令和运行文件
18.4.4 对象查看和自省
18.4.5 直接编辑代码
18.4.6
及时篇
Python语言基础
第1章 进入Python的世界
Python是一种动态解释型的编程语言。Python简单易学、功能强大,支持面向对象、函数式编程。Python可以在Windows、UNIX等多个操作系统上使用,同时Python可以在Java、.NET等开发平台上使用,因此也被称为"胶水语言"。Python的简洁性、易用性使得开发过程变得简练,特别适用于快速应用开发。
本章的知识点:
Python的特征
Python开发环境的配置
Python程序的编写
不同开发平台对Python的支持
1.1 Python的由来
Python语言是由Guido van Rossum在1989年开发的,并最终于1991年初发表。Guido van Rossum曾是CWI公司的一员,使用解释性编程语言ABC开发应用程序,这种语言在软件开发上有许多局限性。由于他要完成系统管理方面的一些任务,需要获取Amoeba机操作系统所提供的系统调用能力。虽然可以设计Amoeba的专用语言实现这个任务,但是van Rossum计划设计一门更通用的程序设计语言。Python就此诞生了。
Python语言已经诞生20多年了,正逐渐发展为主流程序设计语言之一,目前在TIOBE编程语言排行榜中长期占据第八的位次。由于Python语言的动态性,程序解释执行的速度比编译型语言慢。但是随着Python语言的不断优化,一些诸如PyPy项目的不断发展,以及计算机硬件技术的不断发展,动态语言已经越来越受到工业领域的重视。其中的代表性语言有Python、Ruby、SmallTalk、Groovy等。
众所周知,Java是工业应用领域认可的开发语言。Java与C++相比使用更容易,内部结构也相对简单。而Python的语法特性使得程序设计变得更轻松,用Python能编写出比Java可读性更强的代码。随着Jython等解释器的出现,使得Python可以在Java虚拟机上运行。这样Python可以使用Java丰富的应用程序包。Python与读者熟知的JavaScript非常相似,都是解释执行,而且语法结构有很多相同的地方。JavaScript是浏览器端的客户脚本语言,而Python也可以用于Web方面的开发。
Python作为脚本式语言,吸收了Perl、Tcl等语言的优点,这使得Python具备Tcl的扩展性,同时又具备Perl的文本解析和匹配能力。Python与Lisp也有相似之处,Python可以实现函数式的编程模型。
1.2 Python的特色
程序设计语言在不断发展,从最初的汇编语言到后来的C、Pascal语言,发展到现在的C++、Java等高级编程语言。程序设计的难度在不断减小,软件的开发和设计已经形成了一套标准,开发工作已经不再是复杂的任务。最初只能使用机器码编写代码,而现在可以使用具有良好调试功能的IDE环境编程。Python使用C语言开发,但是Python不再有C语言中的指针等复杂数据类型。Python的简洁性使得软件的代码大幅度地减少,开发任务进一步简化。程序员关注的重点不再是语法特性,而是程序所要实现的任务。Python语言有许多重要的特性,而且有的特性是富有创造性的。
1.面向对象的特性
面向对象的程序设计解决了结构化程序设计的复杂性,使得程序设计更贴近现实生活。结构化程序设计把数据和逻辑混合在一起,不便于程序的维护。面向对象的程序设计抽象出对象的行为和属性,把行为和属性分离开,但又合理地组织在一起。Python语言具有很强的面向对象特性,而且简化了面向对象的实现。它消除了保护类型、抽象类、接口等面向对象的元素,使得面向对象的概念更容易理解。
2.内置的数据结构
Python提供了一些内置的数据结构,这些数据结构实现了类似Java中集合类的功能。Python的数据结构包括元组、列表、字典、集合等。内置数据结构的出现简化了程序的设计。元组相当于"只读"的数组,列表可以作为可变长度的数组使用,字典相当于Java中的HashTable类型。内置数据结构的具体使用方法详见第4章。
3.简单性
Python语言的关键字比较少。它没有分号、begin、end等标记,代码块使用空格或制表键缩进的方式来分隔。Python的代码简洁、短小,易于阅读。Python简化了循环语句,即使程序结构很复杂也能快速读懂。详细信息请参考第2章的相关内容。
4.健壮性
Python提供了异常处理机制,能捕获程序的异常情况。此外Python的堆栈跟踪对象能够指出程序出错的位置和出错的原因。异常机制能够避免不安全退出的情况,同时能帮助程序员调试程序。详细信息请参考第9章的相关内容。
5.跨平台性
Python会先被编译为与平台相关的二进制代码,然后再解释执行。这种方式和Java类似,但Python的执行速度提高了。Python编写的应用程序可以运行在Windows、UNIX、Linux等不同的操作系统上。在一种操作系统上编写的Python代码只需做少量的修改,就可以移植到其他的操作系统上。
6.可扩展性
Python是采用C开发的语言,因此可以使用C扩展Python,可以给Python添加新的模块、新的类。同时Python可以嵌入C、C++语言开发的项目中,使程序具备脚本语言的特性。
7.动态性
Python与JavaScript、PHP、Perl等语言类似,它不需要另外声明变量,直接赋值即可创建一个新的变量。
8.强类型语言
Python的变量创建后会对应一种类型,它可根据赋值表达式的内容决定变量的类型。Python在内部建立了管理这些变量的机制,不同类型的变量需要类型转换。
9.应用广泛
Python语言应用于数据库、网络、图形图像、数学计算、Web开发、操作系统扩展等领域。有许多第三方库支持Python。例如,PIL库(目前已经不再维护,取而代之的有Pillow)用于图像处理、NumPy库用于数学计算、WxPython库用于GUI程序的设计、Django框架用于Web应用程序的开发等。
1.3 及时个Python程序
Python的源代码文件以"py"作为后缀。下面编写一段简单的Python程序,创建一个名为hello.py的文件,用于输出字符串"hello world"。
01 if __name__ == "__main__":
02 print("hello world")
[代码说明]
第1行代码相当于C语言中的main()函数,是Python程序的入口。详细用法请参考第5章的相关内容。
第2行代码使用print语句输出字符串"hello world"。
输出结果如下所示。
hello world
Python的print语句用于输出字符串的内容,即把双引号中的内容输出到控制台。Python的输入、输出是通过"流"实现的,上述print语句把字符串的内容输出到标准输出流,即输出到控制台。流也可以把结果输出到文件、打印机等,关于流的详细用法请参考7.3节的内容。
Python程序的运行非常简单,命令格式如下所示。
python python_file_path + python_file.py
其中python_file.py 表示Python的源代码文件,python_file_path表示python_file.py所在的路径。在DOS窗口中输入如图1-1所示的命令,运行文件hello.py。
图1-1 Python程序的运行
这种运行方式不够直观,而且不便于程序的调试。后面将介绍如何在编辑器EditPlus和开发工具PyCharm中运行Python程序。