Python项目开发实战

综合评级:
★★★★★

定价:
¥59.80

作者:
[美]Laura Cassell,Alan Gauld 著 高弘扬 卫莹 译

出版社:
清华大学出版社

出版日期:
2015年10月

页数:
325

字数:
517000

ISBN:
9787302415879

书籍介绍

通过实际项目增强你的Python技能

通过理论和实践的结合以及实际可操作的指导,本书将为你呈现真实世界中的Python编程。书中的实际教程聚焦于功能,覆盖了基本的创建应用、构建和封装库。同时在有经验的Python教员一直为你提供有价值的见解的帮助下,你可以超越教程并开始创建项目。读者应该熟悉核心Python语言的基础语法,并准备增强自己的技能,这样才能在这门顶级编程语言的实际应用中成为专家。

主要内容

◆ 学习Python如何在真实世界中完成日常任务并提高业务效率

◆ 了解库的工作原理、在何处获取和使用它们

◆ 使用Virtualenv、Pip和更多工具建立开发环境

◆ 创建、封装并与Python社区中的其他用户分享库

◆ 使用分层次的方法创建项目,并使用库在每次迭代中添加功能

◆ 在真实世界的中级项目中使用Python,以便获得在更大开源项目中使用它的信心

作者简介

Laura Cassell是PyLadies Atlanta的开创者。她在Big Nerd Ranch教授Python和JavaScript。她现在是New Relic公司Python组的一位工程师主管。

Alan Gauld是电信和客户服务行业的一位企业架构设计师。从1998年他就开始使用Python。他是python-tutor邮件列表中的版主和积极参与者。

目录

第1章 Python核心知识回顾 1

1.1 探索Python语言和解释器 1

1.2 回顾Python数据类型 3

1.2.1 数值类型:整数和浮点数 4

1.2.2 布尔类型 5

1.2.3 None类型 6

1.2.4 容器类型 6

1.2.5 字符串 7

1.2.6 字节和字节数组 9

1.2.7 元组 10

1.2.8 列表 11

1.2.9 字典 12

1.2.10 集 13

1.3 使用Python控制结构 15

1.3.1 结构化你的程序 15

1.3.2 使用序列、块和注释 16

1.3.3 选择一个执行路径 17

1.3.4 迭代 18

1.3.5 异常处理 20

1.3.6 上下文管理 21

1.4 在Python中读取和输出数据 21

1.4.1 与用户交互 21

1.4.2 使用文本文件 23

1.5 扩展Python 24

1.5.1 定义并使用函数 24

1.5.2 定义并使用类和对象 28

1.6 创建和使用模块和包 32

1.6.1 使用和创建模块 33

1.6.2 使用和创建包 34

1.7 创建示例包 35

1.8 使用第三方包 42

1.9 本章小结 43

第2章 Python脚本 47

2.1 访问操作系统 48

2.1.1 获得关于用户和他们的电脑的信息 49

2.1.2 获得当前进程信息 52

2.1.3 管理其他程序 54

2.1.4 更加高效地管理子进程 57

2.1.5 获取文件(和设备)的信息 60

2.1.6 浏览和操纵文件系统 62

2.1.7 探索目录树深度 68

2.2 使用日期和时间 71

2.2.1 使用time模块 71

2.2.2 datetime模块介绍 74

2.2.3 calendar模块介绍 75

2.3 处理常见的文件格式 76

2.3.1 使用逗号分隔的数值 76

2.3.2 使用Config文件 82

2.3.3 操作XML和HTML文件 85

2.4 使用ctypes和pywin32访问原生API 93

2.4.1 访问操作系统库 94

2.4.2 使用COM访问Windows应用 96

2.5 涉及多应用的自动化任务 97

2.5.1 使用Python 98

2.5.2 使用操作系统工具 98

2.5.3 使用数据文件 98

2.5.4 使用第三方模块 98

2.5.5 通过命令行接口与子进程交互 99

2.5.6 为基于服务器的应用使用Web服务 99

2.5.7 使用一个原生代码API 99

2.5.8 使用GUI机器人学 99

2.6 本章小结 100

第3章 管理数据 103

3.1 使用Python存储数据 104

3.1.1 使用DBM作为持久化字典 104

3.1.2 使用Pickle存取对象 109

3.1.3 使用shelve访问对象 111

3.2 使用Python分析数据 116

3.2.1 使用Python的内置特性分析数据 116

3.2.2 使用itertools分析数据 119

3.2.3 使用itertools分析LendyDB数据 124

3.3 使用SQL管理数据 126

3.3.1 关系型数据库的概念 126

3.3.2 结构化查询语言 127

3.3.3 跨表链接数据 134

3.3.4 多对多关系 140

3.4 从LendyDB迁移到SQL

数据库 143

3.4.1 从Python访问SQL 143

3.4.2 创建LendyDB SQL数据库 145

3.4.3 插入测试数据 146

3.4.4 创建一个LendyDB API 148

3.5 探索其他数据管理选择 154

3.5.1 主从数据库 154

3.5.2 NoSQL 155

3.5.3 云计算 155

3.5.4 使用RPy进行数据分析 156

3.6 本章小结 157

第4章 创建桌面应用 161

4.1 组织应用程序 162

4.2 创建命令行界面 163

4.2.1 创建数据层 163

4.2.2 创建核心逻辑层 165

4.2.3 创建用户界面 169

4.3 使用cmd模块创建命令行界面 173

4.4 读取命令行参数 175

4.5 用一些对话框让命令行界面变得生动 176

4.6 使用Tkinter编程GUI 180

4.7 创建简单的GUI 183

4.8 创建Tic-Tac-Toe GUI 186

4.8.1 勾勒一个UI设计 186

4.8.2 创建菜单 187

4.8.3 创建Tic-Tac-Toe面板 188

4.8.4 将GUI连接到游戏 189

4.9 扩展Tkinter 194

4.9.1 使用tix 194

4.9.2 使用ttk 198

4.10 再次回顾借出库 199

4.11 探索其他Python GUI工具包 207

4.11.1 wxPython 207

4.11.2 PyQt 208

4.11.3 PyGTK 209

4.11.4 原生GUI:Cocoa和PyWin32 209

4.11.5 Dabo 210

4.12 存储本地数据 210

4.12.1 存储特定于应用的数据 211

4.12.2 存储用户选择偏好 211

4.12.3 存储应用状态 212

4.12.4 记录错误信息 212

4.13 理解本地化 214

4.13.1 使用区域设置 214

4.13.2 在Python中使用Unicode 216

4.13.3 使用gettext 218

4.14 本章小结 220

 

第5章 Python在Web中的应用 223

5.1 Python在Web中的应用 224

5.1.1 Web应用的组成部分 225

5.1.2 客户端-服务器关系 226

5.1.3 中间件和MVC 226

5.1.4 HTTP方法和头信息 227

5.1.5 什么是API 230

5.2 使用Python进行Web编程 234

5.3 有关Python和Web的更多知识 247

5.3.1 静态网站生成器 247

5.3.2 Web框架 247

5.4 使用Python跨网工作 248

5.4.1 XML-RPC 248

5.4.2 套接字服务器 249

5.5 更多Python网络编程的乐趣 252

5.6 本章小结 253

第6章 Python在更大项目中的应用 255

6.1 使用doctest模块测试 256

6.2 使用unittest模块测试 261

6.3 Python中的测试驱动开发 265

6.4 调试Python代码 266

6.5 工作在更大的Python项目中 275

6.6 发布Python包 279

6.7 本章小结 281

第7章 探索Python前沿技术 283

7.1 使用Python绘图 283

7.1.1 使用turtle graphics 284

7.1.2 使用GUI Canvas对象 284

7.1.3 绘制数据 284

7.1.4 使用imghdr 285

7.1.5 Pillow简介 285

7.1.6 试试ImageMagick 285

7.2 使用Python辅助科学 286

7.2.1 SciPy简介 286

7.2.2 使用Python辅助生物科学 287

7.2.3 使用GIS 287

7.2.4 处理语言 287

7.2.5 综述 288

7.3 使用Python开发游戏 288

7.3.1 增强PyGame经验 288

7.3.2 探索其他选项 289

7.4 进入电影领域 289

7.5 与其他语言集成 290

7.5.1 Jython 291

7.5.2 IronPython 291

7.5.3 Cython 292

7.5.4 Tcl/Tk 292

7.6 进入物理领域 293

7.6.1 serial选项介绍 293

7.6.2 RaspberryPi编程 294

7.6.3 与Arduino对话 294

7.6.4 探索其他选项 294

7.7 创建Python 295

7.7.1 修复bug 295

7.7.2 文档化 295

7.7.3 测试 295

7.7.4 添加特性 296

7.7.5 参加会议 296

7.8 本章小结 296

附录A 练习答案 299

附录B Python标准模块 315

附录C 可用Python资源 323

前言

  在某年的一次会议后,发到PyLadies组织者邮件列表的一封邮件问:“有人有兴趣写一本Python方面的书吗?”当时,我已经考虑撰写一本编程书很久了。在多年教课以及在PyLadies和其他编程聚会做指导之后,我意识到需要一本新的、特定类型的编程书。但是我并没有马上回复那封邮件。我知道写一本书是一项巨大的工程(确实是!),会耗费我大量的时间和精力。我在周末和节假日也要工作(是的,我又对了!)。我也知道我有一份教授编程课程的全职工作,同时也是乔治亚州亚特兰大本地PyLadies的主要组织者。我的孩子也会开始问我:“这个周末你要写书吗?”

  以上内容都是真实的(实际上比我最初的想法还要多),但是我知道书籍很重要。非常多的学生会在课后问我:“现在我已经了解Python基础知识了,我能做些什么呢?”我的答案总是:“你可以参与一些开源项目!”或者“参加一些Python高级课程”。但是这些答案既不能让他们满意也不能让我满意。正确答案应该是:“你必须真正地寻找一些事情来做:解决一个问题或实现一个需求”。这是因为,真正理解编程和一门编程语言的唯一方式就是用这门语言去解决问题。

  然而,另一个问题又出现了:“我没有真正需要解决的问题”。所以,虽然我可以让我的学生去了解开源项目,而这实际上也非常有帮助,但是如果不了解技术,他们可能会迷失,甚至放弃。这样社区就又失去了一位可能带来有趣东西的程序员。所以,在与家人和朋友做大量交流之后,我意识到需要撰写这本书。

  本书目的

  多年以来,一直有人问我们,“我在熟悉Python基础后能做些什么?”,“我能学到什么?”,“我该何去何从?”。解决以上问题就是撰写本书的目的所在。

  对于编程书籍来说,很多人都曾经历过的一个长期问题是它们都是从语言基础到深层概念。这些概念只有拥有计算机科学学位的人才能理解。但这并不酷!编程的大门应该向任何有兴趣的人敞开。我们都应该致力于降低编程的门槛。我们觉得Python做到了这一点,但是我们需要更进一步,并且开始理解人们是如何学习抽象想法和概念的,帮助他们学习编程。

  可以将编程想象成学习如何盖房子,只知道需要木料,但是不知道如何用木料盖房子。你仍然需要理解结构工程、电气、水管设施、通风、高压交流电(HighVoltageAlternatingCurrent,HVAC)等。编程也是一样。语言只解释了盖房子需要木料。还有很多与木料相关的东西。我们希望帮助你了解这些概念。

  本书读者对象

  本书并不适合想要学习Python的初学者。实际上,作为本书的读者,你需要拥有一些Python编程基础。这意味着你已经学过一些教程。你也应该理解空格在Python中的作用、列表被包含在方括号([])中、但字典被包含在花括号({})中。本书适用于那些初学者,但应该已经学过一两个教程。这些人理解Python基础,但对Python可以实现的功能很感兴趣。

  俗语说的好,需要是发明之母。在你学习编程时,这句话非常正确。如果你需要软件来执行特定函数或任务,那么围绕着需求学习一门语言就很容易。你有需求,语言就会帮助你,学习语言,解决问题,你学到了知识,并且立即付诸实践。这太棒了!然而,如果你觉得编程很有趣,但却没有需求,不知道要实现什么,结果会怎样呢?这就是本书要解决的问题。

  本书会帮助你学习大部分人不会对初学者讲述的Python部分。书中涉及的大部分工具和技术只有在实践中才会遇到。然而,对于没有特定问题需要解决的新手程序员来说,学习这些工具可能比较困难。在很长一段时间里,没有人想要向开发者介绍这些工具,因为它们真的很常用。我们希望可以带你领略Python的能力和辉煌。

  你将学习如何编写一个Web应用,以及如何使用Python库与数据库通信。如果你是一名系统管理员,还可以学到可以加速工作流的系统工具。我们将简要介绍诸如安全和最佳实践的话题,概述如何使用Python库创建图形用户界面(GUI)。还将介绍如何编写和使用应用编程接口(ApplicationProgrammingInterfaces,API),以及其他对Python程序员有用的话题。

  本书内容简介

  我们希望带你简要了解一下Python的基础知识,将向你介绍那些只有在解决问题时才会理解的概念。尽管我们不能在这里呈现所有将来可能需要解决的问题,但是我们希望可以为Python新手展示Python语言的强大特性和可以使用的包和技术。

  首先,提供一个Python的速成课程,以防你已经忘记了所有东西。我们将复习基础知识,然后你可以决定是否完整阅读该章。接下来,将从脚本语言的角度来重新审视Python。通过尝试使用Python编写一些小脚本来访问你的系统。这可以展示Python让你所拥有的非常基本的能力。之后会讨论数据,这其实就是编程的一切——操纵数据。你会使用Python提供的标准库来完成一些示例。我们甚至会讨论数据库,这样就可以对它有一个基本了解。我们想让你了解并接触系统中可能会接触到的每个部分。

  在前三章之后,将介绍桌面应用。尽管这些在Python中并不常用,但也是语言的一个特性。在你的整个Python程序员的生涯中它都非常有用。接下来将介绍Internet。这时,Python会充当数据通信工具。你将学习有关HTTP和Web的所有知识,以及网站在底层的工作方式,甚至会动手编写和使用API。很多新手程序员对API都很迷惑。我们希望在本章揭开它神秘的面纱。

  在最后几章,将介绍Python中一些更高级的话题,例如,如何在更大的项目中使用Python、调试代码、创建测试模块、错误处理,以及创建自定义的异常和异常处理器。你在使用本书时、在将来查阅本书时、在使用Python编程时,都可以使用索引快速找到你想要的内容。

  本书信息量很大,其中包含大量的工具和想法,可帮助你开始使用Python。我们希望你可以自己动手尝试,并且花时间在你感兴趣的概念和想法上做更多功课。在本书中,已经包含了大量实践练习来帮助你尝试新概念。在大多数章节中,还包含了一些挑战性问题,以帮助你巩固新知识。

  使用本书须知

  为了更好地使用本书,建议你所使用的现代计算机能够运行Python3.3或更新版本,有一个能够舒适使用的好的文本编辑器,具有Internet连接(本书一些部分会使用),以及足够的耐心和求知欲。我们也建议你使用Internet搜索任何遇到的问题。专业程序员实际上并不是什么都会。他们通常只知道那些每天需要处理的问题,他们的大部分时间都花在搜索和追踪问题发生的原因上。不要觉得依赖Google解决问题是很让人沮丧的。有时,使用Google搜索问题的能力和你的编程能力是同样重要的。

  源代码

  (2)阅读其内容,单击Agree按钮。

  (3)提供加入论坛所需的信息及愿意提供的可选信息,单击Submit按钮。

  (4)然后就可以收到一封电子邮件,其中的信息描述了如何验证账户,完成加入过程。

  加入论坛后,就可以发送新信息,回应其他用户的帖子。可以随时在Web上阅读信息。如果希望某个论坛给自己发送新信息,可以在论坛列表中单击该论坛对应的SubscribetothisForum图标。

  对于如何使用WroxP2P的更多信息,可阅读P2PFAQ,了解论坛软件的工作原理,以及许多针对P2P和Wrox图书的常见问题解答。要阅读FAQ,可以单击任意P2P页面上的FAQ链接。

课课家教育

未登录