内容简介
第一篇 Python基础知识
第1章 初识Python
1.1 Python简介
1.1.1 什么是Python
1.1.2 Python的应用领域
1.1.3 如何学好Python
1.1.4 Python API文档
1.2 搭建Python开发环境
1.2.1 安装官方的Python运行环境
1.2.2 配置PATH环境变量
1.2.3 安装Anaconda Python开发环境
1.2.4 下载和安装JDK
1.2.5 下载和安装Eclipse
1.2.6 Python IDE(PyDev)安装
1.2.7 配置Python IDE(PyDev)开发环境
1.2.8 测试Python IDE(PyDev)开发环境
1.2.9 安装PyCharm
1.2.10 配置PyCharm
1.2.11 Python中的REPL环境
1.3 第一个Python程序
1.4 调试Python程序
1.5 小结
1.6 实战与练习
第2章 Python语言基础
2.1 Python程序中的基本要素
2.1.1 导入Python模块
2.1.2 声明变量
2.1.3 清空Python控制台
2.2 数字
2.2.1 基础知识
2.2.2 大整数
2.2.3 二进制、八进制和十六进制
2.2.4 数字的格式化输出
2.3 获取用户输入
2.4 函数
2.5 注释
2.6 字符串基础
2.6.1 单引号字符串和转义符
2.6.2 拼接字符串
2.6.3 保持字符串的原汁原味
2.6.4 长字符串
2.7 小结
2.8 实战与练习
第3章 条件、循环和其他语句
3.1 神奇的print函数
3.2 有趣的赋值操作
3.3 用缩进创建代码块
3.4 条件和条件语句
3.4.1 布尔值和布尔变量
3.4.2 条件语句(if、else和elif)
3.4.3 嵌套代码块
3.4.4 比较运算符
3.4.5 断言
3.5 循环
3.5.1 while循环
3.5.2 for循环
3.5.3 跳出循环
3.5.4 循环中的else语句
3.6 使用exec和eval执行求值字符串
3.7 小结
3.8 实战与练习
第4章 列表和元组
4.1 定义序列
4.2 序列的基本操作
4.2.1 通过索引操作序列元素
4.2.2 分片
4.2.3 序列相加
4.2.4 序列的乘法
4.2.5 检查某个值是否属于一个序列
4.2.6 序列的长度、最大值和最小值
4.3 列表的基本操作
4.4 列表方法
4.5 元组
4.6 小结
4.7 实战与练习
第5章 字符串
5.1 字符串的基本操作
5.2 格式化字符串
5.2.1 字符串格式化基础
5.2.2 模板字符串
5.2.3 字符串的format方法
5.2.4 更进一步控制字符串格式化参数
5.2.5 字段宽度、精度和千位分隔符
5.2.6 符号、对齐、用0填充和进制转换
5.3 字符串方法
5.3.1 center方法
5.3.2 find方法
5.3.3 join方法
5.3.4 split方法
5.3.5 lower方法、upper方法和capwords函数
5.3.6 replace方法
5.3.7 strip方法
5.3.8 translate方法与maketrans方法
5.4 小结
5.5 实战与练习
第6章 字典
6.1 为什么要引入字典
6.2 创建和使用字典
6.2.1 dict函数
6.2.2 字典的基本操作
6.2.3 字典的格式化字符串
6.2.4 序列与迭代
6.3 字典方法
6.3.1 clear方法
6.3.2 copy方法与deepcopy函数
6.3.3 fromkeys方法
6.3.4 get方法
6.3.5 items方法和keys方法
6.3.6 pop方法和popitem方法
6.3.7 setdefault方法
6.3.8 update方法
6.3.9 values方法
6.4 小结
6.5 实战与练习
第7章 函数
7.1 懒惰是重用的基石
7.2 函数基础
7.2.1 创建函数
7.2.2 为函数添加文档注释
7.2.3 没有返回值的函数
7.3 函数参数
7.3.1 改变参数的值
7.3.2 关键字参数与默认值
7.3.3 变参数
7.3.4 将序列作为函数的参数值
7.4 作用域
7.5 递归
7.6 小结
7.7 实战与练习
第8章 类和对象
8.1 对象的魔法
8.2 类
8.2.1 创建自己的类
8.2.2 方法和私有化
8.2.3 类代码块
8.2.4 类的继承
8.2.5 检测继承关系
8.2.6 多继承
8.2.7 接口
8.3 小结
8.4 实战与练习
第9章 异常
9.1 什么是异常
9.2 主动抛出异常
9.2.1 raise语句
9.2.2 自定义异常类
9.3 捕捉异常
9.3.1 try…except语句的基本用法
9.3.2 捕捉多个异常
9.3.3 用同一个代码块处理多个异常
9.3.4 捕捉对象
9.3.5 异常捕捉中的else子句
9.3.6 异常捕捉中的finally子句
9.4 异常、函数与栈跟踪
9.5 异常的妙用
9.6 小结
9.7 实战与练习
第10章 方法、属性和迭代器
10.1 构造方法
10.1.1 构造方法的基础知识
10.1.2 重写普通方法和构造方法
10.1.3 使用super函数
10.2 特殊成员方法
10.2.1 自定义序列
10.2.2 从内建列表、字符串和字典继承
10.3 属性
10.3.1 传统的属性
10.3.2 property函数
10.3.3 监控对象中所有的属性
10.4 静态方法和类方法
10.5 迭代器
10.5.1 自定义可迭代的类
10.5.2 将迭代器转换为列表
10.6 生成器
10.6.1 创建生成器
10.6.2 递归生成器
10.7 小结
10.8 实战与练习
第二篇 Python高级编程
第11章 正则表达式
11.1 在Python语言中使用正则表达式
11.1.1 使用match方法匹配字符串
11.1.2 使用search方法在一个字符串中查找模式
11.1.3 匹配多个字符串
11.1.4 匹配任何单个字符
11.1.5 使用字符集
11.1.6 重复、可选和特殊字符
11.1.7 分组
11.1.8 匹配字符串的起始和结尾以及单词边界
11.1.9 使用findall和finditer查找每一次出现的位置
11.1.10 用sub和subn搜索与替换
11.1.11 使用split分隔字符串
11.2 一些常用的正则表达式
11.3 小结
11.4 实战与练习
第12章 常用模块
12.1 sys模块
12.2 os模块
12.2.1 获取与改变工作目录
12.2.2 文件与目录操作
12.2.3 软链接与硬链接
12.2.4 杂项
12.3 集合、堆和双端队列(heap模块、deque类)
12.3.1 集合
12.3.2 堆
12.3.3 双端队列
12.4 时间、日期与日历(time模块)
12.4.1 时间元组
12.4.2 格式化日期和时间
12.4.3 时间戳的增量
12.4.4 计算日期和时间的差值
12.4.5 获取某月和某年的日历
12.5 随机数(random模块)
12.6 数学(math模块)
12.7 小结
12.8 实战与练习
第13章 文件和流
13.1 打开文件
13.2 操作文件的基本方法
13.2.1 读文件和写文件
13.2.2 管道输出
13.2.3 读行和写行
13.3 使用FileInput对象读取文件
13.4 小结
13.5 实战与练习
第14章 数据存储
14.1 处理XML格式的数据
14.1.1 读取与搜索XML文件
14.1.2 字典转换为XML字符串
14.1.3 XML字符串转换为字典
14.2 处理JSON格式的数据
14.2.1 JSON字符串与字典互相转换
14.2.2 将JSON字符串转换为类实例
14.2.3 将类实例转换为JSON字符串
14.2.4 类实例列表与JSON字符串互相转换
14.3 将JSON字符串转换为XML字符串
14.4 SQLite数据库
14.4.1 管理SQLite数据库
14.4.2 用Python操作SQLite数据库
14.5 MySQL数据库
14.6 ORM
14.6.1 SQLAlchemy
14.6.2 SQLObject
14.7 非关系型数据库
14.7.1 NoSQL简介
14.7.2 MongoDB数据库
14.7.3 pymongo模块
14.8 小结
14.9 实战与练习
第15章 TCP与UDP编程
15.1 套接字
15.1.1 建立TCP服务端
15.1.2 服务端接收数据的缓冲区
15.1.3 服务端的请求队列
15.1.4 TCP时间戳服务端
15.1.5 用Socket实现HTTP服务器
15.1.6 客户端Socket
15.1.7 UDP时间戳服务端
15.1.8 UDP时间戳客户端
15.2 socketserver模块
15.2.1 实现socketserver TCP时间戳服务端
15.2.2 实现socketserver TCP时间戳客户端
15.3 小结
15.4 实战与练习
第16章 网络高级编程
16.1 urllib3模块
16.1.1 发送HTTP GET请求
16.1.2 发送HTTP POST请求
16.1.3 HTTP请求头
16.1.4 HTTP响应头
16.1.5 上传文件
16.1.6 超时
16.2 twisted框架
16.2.1 异步编程模型
16.2.2 Reactor(反应堆)模式
16.2.3 HelloWorld(twisted框架)
16.2.4 用twisted实现时间戳客户端
16.2.5 用twisted实现时间戳服务端
16.2.6 用twisted获取Email邮箱目录列表
16.3 FTP客户端
16.4 Email客户端
16.4.1 使用SMTP发送简单的Email
16.4.2 使用SMTP发送带附件的Email
16.4.3 使用POP3接收Email
16.4.4 使用IMAP4接收Email
16.5 小结
16.6 实战与练习
第17章 多线程
17.1 线程与进程
17.1.1 进程
17.1.2 线程
17.2 Python与线程
17.2.1 使用单线程执行程序
17.2.2 使用多线程执行程序
17.2.3 为线程函数传递参数
17.2.4 线程和锁
17.3 高级线程模块
17.3.1 Thread类与线程函数
17.3.2 Thread类与线程对象
17.3.3 从Thread类继承
17.4 线程同步
17.4.1 线程锁
17.4.2 信号量
17.5 生产者—消费者问题与queue模块
17.6 小结
17.7 实战与练习
第18章 GUI库:tkinter
18.1 tkinter 简介
18.2 编写第一个tkinter程序
18.3 布局
18.3.1 pack布局
18.3.2 place布局
18.3.3 grid布局
18.4 控件
18.4.1 Label控件和Button控件
18.4.2 Entry控件与Text控件
18.4.3 Radiobutton控件
18.4.4 Checkbutton控件
18.4.5 Scale控件
18.4.6 Listbox控件
18.5 向窗口添加菜单
18.6 对话框
18.7 小结
18.8 实战与练习
第19章 GUI库:PyQt5
19.1 PyQt5简介
19.2 安装PyQt5
19.2.1 PyQt5开发环境搭建
19.2.2 配置QTDesigner(可视化开发)
19.2.3 配置PyUIC
19.3 编写第一个PyQt5程序
19.4 窗口的基本功能
19.4.1 设置窗口图标
19.4.2 显示提示框
19.4.3 关闭窗口
19.4.4 消息盒子
19.4.5 窗口居中
19.5 布局
19.5.1 绝对布局
19.5.2 盒布局
19.5.3 网格布局
19.6 控件
19.6.1 QPushButton控件
19.6.2 QLineEdit控件
19.6.3 QCheckBox控件
19.6.4 QSlider控件
19.6.5 QProgressBar控件
19.6.6 QPixmap控件
19.6.7 QComboBox控件
19.6.8 QCalendarWidget控件
19.7 菜单
19.8 小结
19.9 实战与练习
第20章 测试
20.1 先测试后编码
20.1.1 为代码划定边界
20.1.2 测试的步骤
20.2 测试工具
20.2.1 doctest
20.2.2 unittest
20.3 检查源代码
20.3.1 PyLint
20.3.2 Flake8
20.4 性能分析
20.5 小结
20.6 实战与练习
第三篇 Python Web开发
第21章 Python Web框架:Flask
21.1 Flask基础知识
21.1.1 使用8行代码搞定Web应用
21.1.2 静态路由和动态路由
21.1.3 获取HTTP请求数据
21.1.4 Response与Cookie
21.1.5 会话
21.1.6 静态文件和重定向
21.2 Jinja2模板
21.2.1 第一个基于Jinja2模板的Web应用
21.2.2 在Jinja2模板中使用复杂数据
21.2.3 在Jinja2模板中的过滤器
21.2.4 条件控制
21.2.5 循环控制
21.2.6 宏操作
21.2.7 include指令
21.2.8 模板继承
21.2.9 使用flask-bootstrap模块集成Twitter Bootstrap
21.2.10 自定义错误页面
21.3 Web表单与Flask-WTF扩展
21.3.1 表单类
21.3.2 简单的表单组件
21.3.3 单选和多选组件
21.3.4 表单校验器
21.3.5 获取和设置表单组件中的数据
21.4 小结
21.5 实战与练习
第22章 Python Web框架:Django
22.1 Django开发环境搭建
22.2 Django基础知识
22.2.1 建立第一个Django工程
22.2.2 Django工程结构分析
22.2.3 远程访问与端口号
22.2.4 用PyCharm建立Django工程
22.2.5 添加路由
22.2.6 在MyCharm中指定IP和端口号
22.2.7 处理HTTP请求
22.2.8 Response与Cookie
22.2.9 读写Session
22.2.10 用户登录
22.2.11 静态文件
22.3 Django模板
22.3.1 编写第一个基于Django模板的应用
22.3.2 条件控制标签
22.3.3 循环控制标签
22.3.4 过滤器
22.4 小结
22.5 实战与练习
第四篇 Python科学计算与数据分析
第23章 科学计算库:NumPy
23.1 NumPy开发环境搭建
23.2 第一个NumPy程序
23.3 NumPy数组
23.3.1 创建多维数组
23.3.2 获取数组值和数组的分片
23.3.3 改变数组的维度
23.3.4 水平组合数组
23.3.5 垂直数组组合
23.3.6 水平分隔数组
23.3.7 垂直分隔数组
23.3.8 将数组转换为Python列表
23.4 NumPy常用函数
23.4.1 存取NumPy数组
23.4.2 读写CSV文件
23.4.3 成交量加权平均价格
23.4.4 数组的最大值、最小值和取值范围
23.4.5 计算数组的中位数和方差
23.4.6 计算两只股票的相关性
23.5 小结
23.6 实战与练习
第24章 数据可视化库:Matplotlib
24.1 Matplotlib开发环境搭建
24.2 基础知识
24.2.1 第一个Matplotlib程序
24.2.2 绘制正弦曲线和余弦曲线
24.2.3 绘制随机点
24.2.4 绘制柱状图
24.2.5 绘制直方图与盒状图
24.2.6 绘制饼图
24.3 定制颜色和样式
24.3.1 定制曲线的颜色
24.3.2 定制离散点的样式
24.3.3 定制柱状图颜色
24.3.4 定制饼图颜色
24.3.5 定制曲线类型
24.3.6 定制柱状图的填充模式
24.4 注释
24.4.1 在坐标系上显示标题
24.4.2 使用LaTex格式的标题
24.4.3 为X轴和Y轴添加注释
24.4.4 在坐标系指定位置放置注释
24.4.5 为文本注释添加Box
24.5 小结
24.6 实战与练习
第25章 数据分析库:Pandas
25.1 Pandas开发环境搭建
25.2 样本数据集
25.3 Pandas基础知识
25.3.1 数据集的装载与基础操作
25.3.2 查看数据集中的列
25.3.3 查看数据集的行
25.3.4 查看数据集单元格中的数据
25.3.5 对数据集进行分组统计
25.3.6 可视化统计数据
25.4 Pandas数据类型
25.4.1 创建Series
25.4.2 创建DataFrame
25.4.3 Series的基本操作
25.4.4 Series的方法
25.4.5 Series的条件过滤
25.4.6 DataFrame的条件过滤
25.5 小结
25.6 实战与练习
第五篇 Python Web爬虫技术
第26章 网络爬虫与Beautiful Soup
26.1 网络爬虫基础
26.1.1 爬虫分类
26.1.2 编写第1个网络爬虫
26.1.3 保存抓取的数据
26.1.4 从百度抓取海量比基尼美女图片
26.2 HTML分析库:Beautiful Soup
26.2.1 如何使用Beautiful Soup
26.2.2 Tag对象的name和string属性
26.2.3 读写标签属性
26.2.4 用Beautiful Soup分析京东首页的HTML代码
26.2.5 通过回调函数过滤标签
26.3 支持下载队列的多线程网络爬虫
26.4 小结
26.5 实战与练习
第27章 网络爬虫框架:Scrapy
27.1 Scrapy基础知识
27.1.1 Scrapy简介
27.1.2 Scrapy安装
27.1.3 Scrapy Shell抓取Web资源
27.1.4 XPath入门
27.2 用Scrapy编写网络爬虫
27.2.1 创建和使用Scrapy工程
27.2.2 在PyCharm中使用Scrapy
27.2.3 使用Scrapy抓取数据并通过XPath指定解析规则
27.2.4 将抓取到的数据保存为多种格式的文件
27.3 小结
27.4 实战与练习
第六篇 Python项目实战
第28章 Web项目实战:基于Flask的美团网
28.1 项目概述
28.1.1 项目效果演示
28.1.2 项目工程结构
28.2 美团网核心功能实现
28.2.1 设计服务API
28.2.2 用Ajax技术与服务端交互
28.3 Python与微信支付
28.3.1 微信支付要准备的数据以及支付流程
28.3.2 编写支付核心类WXPay
28.4 小结
第29章 Web项目实战:基于Django的58同城
29.1 项目效果演示
29.2 操作MySQL数据库
29.3 账号
29.3.1 用户注册
29.3.2 用户登录
29.4 招聘页面
29.5 二手车页面
29.6 小结
第30章 网络爬虫实战:天气预报服务API
30.1 项目效果演示
30.2 建立MySQL数据库
30.3 抓取天气预报数据
30.4 编写天气预报服务API
30.5 实现Web版天气预报查询客户端
30.6 小结
第31章 爬虫项目实战:胸罩销售数据分析
31.1 项目效果演示
31.2 天猫胸罩销售数据
31.2.1 天猫胸罩销售数据分析
31.2.2 抓取天猫胸罩销售数据
31.2.3 抓取胸罩商品列表
31.2.4 将抓取的销售数据保存到SQLite数据库中
31.3 京东胸罩销售数据
31.3.1 京东胸罩销售数据分析
31.3.2 抓取京东胸罩销售数据
31.4 数据清洗
31.5 数据分析与可视化
31.5.1 用SQL语句分析胸罩(按罩杯尺寸)的销售比例
31.5.2 用Pandas和Matplotlib对胸罩销售比例进行可视化分析
31.5.3 按上胸围分析胸罩的销售比例
31.5.4 罩杯和上胸围综合数据可视化分析
31.5.5 统计哪一种颜色的胸罩卖得最好
31.5.6 用盒状图与直方图表示罩杯与上胸围分布
31.6 小结
第32章 GUI项目实战:动态修改域名指向的IP
32.1 搭建开发环境
32.2 项目效果演示
32.3 获取公网IP
32.4 定时更新公网IP
32.5 更新域名对应的IP
32.6 小结
第33章 游戏项目实战:俄罗斯方块
33.1 搭建开发环境
33.2 项目效果演示
33.3 用户注册
33.4 用户登录
33.5 游戏界面绘制和渲染
33.6 用按键控制游戏
33.7 播放背景音乐
33.8 用户积分
33.9 小结