Python编程精进(第1辑)(套装共3册)
Python编程精进(第1辑)(套装共3册)
Python高级编程(第2版)
译者简介
1 Python现状
1.1 Python的现状与未来
1.2 Python升级及其原因
1.3 追踪Python最新变化——PEP文档
1.4 当前Python 3的普及程度
1.5 Python 3和Python 2的主要差异
1.5.1 为什么要关注这些差异
1.5.2 主要的语法差异和常见陷阱
1.5.3 用于保持跨版本兼容性的常用工具和技术
1.6 不只是CPython
1.6.1 为什么要关注Python实现
1.6.2 Stackless Python
1.6.3 Jython
1.6.4 IronPython
1.6.5 PyPy
1.7 Python开发的现代方法
1.8 应用层Python环境隔离
1.8.1 为什么要隔离
1.8.2 常用解决方案
1.8.3 选择哪种工具
1.9 系统级环境隔离
1.9.1 使用Vagrant的虚拟开发环境
1.9.2 容器化与虚拟化的对比
1.10 常用的生产力工具
1.10.1 自定义Python shell——IPython、bpython、ptpython等
1.10.2 交互式调试器
1.11 有用的资源
1.12 小结
2 语法最佳实践——类级别以下
2.1 Python的内置类型
2.1.1 字符串与字节
2.1.2 集合类型
2.2 高级语法
2.2.1 迭代器
2.2.2 yield语句
2.2.3 装饰器
2.2.4 上下文管理器——with语句
2.3 你可能还不知道的其他语法元素
2.3.1 for...else...语句
2.3.2 函数注解
2.4 小结
3 语法最佳实践——类级别以上
3.1 子类化内置类型
3.2 访问超类中的方法
3.2.1 Python 2中的旧式类与super
3.2.2 理解Python的方法解析顺序
3.2.3 使用super易犯的错误
3.2.4 最佳实践
3.3 高级属性访问模式
3.3.1 描述符
3.3.2 property
3.3.3 槽
3.4 元编程
3.4.1 装饰器——一种元编程方法
3.4.2 类装饰器
3.4.3 使用__new__()方法覆写实例创建过程
3.4.4 元类
3.4.5 一些关于代码生成的提示
3.5 小结
4 选择好的名称
4.1 PEP 8与命名最佳实践
4.1.1 为何要遵守PEP 8以及何时遵守PEP 8
4.1.2 超越PEP 8——团队的风格指南
4.2 命名风格
4.3 命名指南
4.3.1 用“has”或“is”前缀命名布尔元素
4.3.2 用复数形式命名集合变量
4.3.3 用显式名称命名字典
4.3.4 避免通用名称
4.3.5 避免现有名称
4.4 参数的最佳实践
4.4.1 通过迭代设计构建参数
4.4.2 信任参数和测试
4.4.3 小心使用*args和**kwargs魔法参数
4.5 类的名称
4.6 模块和包的名称
4.7 有用的工具
4.7.1 Pylint
4.7.2 pep8和flake8
4.8 小结
5 编写一个包
5.1 创建一个包
5.1.1 Python打包工具的混乱状态
5.1.2 项目配置
5.1.3 自定义setup命令
5.1.4 在开发期间使用包
5.2 命名空间包
5.2.1 为什么有用
5.2.2 PEP 420——隐式命名空间包
5.2.3 以前Python版本中的命名空间包
5.3 上传一个包
5.3.1 PyPI——Python包索引
5.3.2 源代码包与构建包
5.4 独立可执行文件
5.4.1 独立可执行文件何时有用
5.4.2 常用工具
5.4.3 可执行包中Python代码的安全性
5.5 小结
6 部署代码
6.1 十二要素应用
6.2 用Fabric进行自动化部署
6.3 你自己的包索引或索引镜像
6.3.1 PyPI镜像
6.3.2 使用包进行部署
6.4 常见约定与实践
6.4.1 文件系统层次结构
6.4.2 隔离
6.4.3 使用进程管理工具
6.4.4 应该在用户空间运行应用代码
6.4.5 使用HTTP反向代理
6.4.6 优雅地重新加载进程
6.5 代码检测与监控
6.5.1 记录错误——sentry/raven
6.5.2 监控系统与应用指标
6.5.3 处理应用日志
6.6 小结
7 使用其他语言开发Python扩展
7.1 使用C或者C++编写扩展
7.2 为什么你想用扩展
7.2.1 提高关键代码段的性能
7.2.2 集成现有的使用不同语言编写的代码
7.2.3 集成第三方动态库
7.2.4 创建自定义数据类型
7.3 编写扩展
7.3.1 纯C扩展
7.3.2 Cython
7.4 挑战
7.4.1 额外的复杂性
7.4.2 调试
7.5 无扩展的动态库接口
7.5.1 ctypes
7.5.2 CFFI
7.6 小结
8 管理代码
8.1 版本控制系统
8.1.1 集中式系统
8.1.2 分布式系统
8.1.3 集中式还是分布式
8.1.4 尽可能使用Git
8.1.5 Git工作流程与GitHub工作流程
8.2 持续的开发过程
8.2.1 持续集成
8.2.2 持续交付
8.2.3 持续部署
8.2.4 常用的持续集成工具
8.2.5 选择正确的工具和常见的陷阱
8.3 小结
9 文档化你的项目
9.1 7项技术写作规则
9.1.1 两步写作
9.1.2 定位读者
9.1.3 使用简单的风格
9.1.4 限制信息范围
9.1.5 使用现实中的代码示例
9.1.6 使用轻量且充分的方法
9.1.7 使用模板
9.2 reStructuredText入门
9.2.1 章节结构
9.2.2 列表
9.2.3 行内标记
9.2.4 文字块
9.2.5 链接
9.3 构建文档
9.4 构建自己的文档集
9.4.1 构建格局
9.4.2 文档构建与持续集成
9.5 小结
10 测试驱动开发
10.1 我不测试
10.1.1 测试开发的原则
10.1.2 什么样的测试
10.1.3 达式Python标准测试工具
10.2 我做测试
10.2.1 unittest陷阱
10.2.2 unittest的替代品
10.2.3 测试覆盖率
10.2.4 仿真与模拟
10.2.5 测试环境与依赖兼容性
10.2.6 文档驱动开发
10.3 小结
11 优化——一般原则与分析技术
11.1 3个优化规则
11.1.1 首先要能工作
11.1.2 从用户的角度考虑
11.1.3 保持代码的可读性和可维护性
11.2 优化策略
11.2.1 找到另外的罪魁祸首
11.2.2 扩展硬件
11.2.3 编写速度测试
11.3 查找瓶颈
11.3.1 分析CPU使用情况
11.3.2 分析内存使用
11.3.3 分析网络使用情况
11.4 小结
12 优化——一些强大的技术
12.1 降低复杂度
12.1.1 循环复杂度
12.1.2 大O记法
12.2 简化
12.3 使用集合模块
12.3.1 deque
12.3.2 defaultdict
12.3.3 namedtuple
12.4 架构体系的权衡
12.4.1 使用启发式和近似算法
12.4.2 使用任务队列和延迟处理
12.4.3 使用概率型数据结构
12.5 缓存
12.5.1 确定性缓存
12.5.2 非确定性缓存
12.5.3 缓存服务
12.6 小结
13 并发
13.1 为什么需要并发
13.2 多线程
13.2.1 什么是多线程
13.2.2 Python如何处理多线程
13.2.3 何时应该使用多线程
13.3 多进程
13.4 异步编程
13.4.1 协同多任务与异步I/O
13.4.2 Python中的async和await关键字
13.4.3 老Python版本中的asyncio
13.4.4 异步编程实例
13.4.5 使用futures将异步代码同步化
13.5 小结
14 有用的设计模式
14.1 创建型模式
14.2 结构型模式
14.2.1 适配器
14.2.2 代理
14.2.3 外观
14.3 行为模式
14.3.1 观察者
14.3.2 访问者
14.3.3 模板
14.4 小结
Python网络爬虫实战
1 Python环境配置
1.1 Python简介
1.2 Python开发环境配置
1.3 本章小结
2 Python基础
2.1 Python变量类型
2.2 Python语句
2.3 函数和类
2.4 Python代码格式
2.5 Python调试
2.6 本章小结
3 简单的Python脚本
3.1 九九乘法表
3.2 斐波那契数列
3.3 概率计算
3.4 读写文件
3.5 本章小结
4 Python爬虫常用模块
4.1 Python标准库之urllib2模块
4.2 Python标准库 ——logging模块
4.3 其他有用模块
4.4 本章小结
5 Scrapy爬虫框架
5.1 安装Scrapy
5.2 Scrapy选择器XPath和CSS
5.3 Scrapy爬虫实战一:今日影视
5.4 Scrapy爬虫实战二:天气预报
5.5 Scrapy爬虫实战三:获取代理
5.6 Scrapy爬虫实战四:糗事百科
5.7 scrapy爬虫实战五:爬虫攻防
5.8 本章小结
6 Beautiful Soup爬虫
6.1 安装Beautiful Soup环境
6.2 BeautifulSoup解析器
6.3 bs4爬虫实战一:获取百度贴吧内容
6.4 bs4爬虫实战二:获取双色球中奖信息
6.5 bs4爬虫实战三:获取起点小说信息
6.6 bs4爬虫实战四:获取电影信息
6.7 bs4爬虫实战五:获取音悦台榜单
6.8 本章小结
7 Mechanize模拟浏览器
7.1 安装Mechanize模块
7.2 Mechanize测试
7.3 Mechanize实站一:获取Modem信息
7.4 Mechanize实战二:获取音悦台公告
7.5 本章总结
8 Selenium模拟浏览器
8.1 安装Selenium模块
8.2 浏览器选择
8.3 Selenium&PhantomJS抓取数据
8.4 Selenium&PhantomJS实战一:获取代理
8.5 Selenium&PhantomJS实战二:漫画爬虫
8.6 本章总结
精通Python自然语言处理
审阅者简介
译者简介
1 字符串操作
1.1 切分
1.2 标准化
1.3 替换和校正标识符
1.4 在文本上应用Zipf定律
1.5 相似性度量
1.6 小结
2 统计语言建模
2.1 理解单词频率
2.2 在MLE模型上应用平滑
2.3 为MLE开发一个回退机制
2.4 应用数据的插值以便获取混合搭配
2.5 通过复杂度来评估语言模型
2.6 在语言建模中应用Metropolis-Hastings算法
2.7 在语言处理中应用Gibbs采样法
2.8 小结
3 形态学:在实践中学习
3.1 形态学简介
3.2 理解词干提取器
3.3 理解词形还原
3.4 为非英文语言开发词干提取器
3.5 形态分析器
3.6 形态生成器
3.7 搜索引擎
3.8 小结
4 词性标注:单词识别
4.1 词性标注简介
4.2 创建词性标注语料库
4.3 选择一种机器学习算法
4.4 涉及n-gram的统计建模
4.5 使用词性标注语料库开发分块器
4.6 小结
5 语法解析:分析训练资料
5.1 语法解析简介
5.2 Treebank建设
5.3 从Treebank提取上下文无关文法规则
5.4 从CFG创建概率上下文无关文法
5.5 CYK线图解析算法
5.6 Earley线图解析算法
5.7 小结
6 语义分析:意义很重要
6.1 语义分析简介
6.2 使用Wordnet生成同义词集id
6.3 使用Wordnet进行词义消歧
6.4 小结
7 情感分析:我很快乐
7.1 情感分析简介
7.2 小结
8 信息检索:访问信息
8.1 信息检索简介
8.2 向量空间评分及查询操作符关联
8.3 使用隐性语义索引开发IR系统
8.4 文本摘要
8.5 问答系统
8.6 小结
9 语篇分析:理解才是可信的
9.1 语篇分析简介
9.2 小结
10 NLP系统评估:性能分析
10.1 NLP系统评估要点
10.2 IR系统的评估
10.3 错误识别指标
10.4 基于词汇搭配的指标
10.5 基于句法匹配的指标
10.6 使用浅层语义匹配的指标
10.7 小结
思维导图
防止博客图床图片失效,防止图片源站外链:
http://www.processon.com/chart_image/5e5b3a4ee4b0c037b6081d9d.png)
思维导图在线编辑链接: