新書推薦:
《
500万次倾听:陪伤心的人聊聊
》
售價:HK$
53.8
《
英国商业500年(见证大国崛起与企业兴衰,启迪未来商业智慧。)
》
售價:HK$
80.6
《
万千心理·儿童心理治疗中的心智化:临床实践指导
》
售價:HK$
87.4
《
自我囚禁的人:完美主义的心理成因与自我松绑(破除你对完美主义的迷思,尝试打破自我评价过低与焦虑的恶性循环)
》
售價:HK$
66.1
《
周易
》
售價:HK$
44.6
《
东南亚的传统与发展
》
售價:HK$
67.2
《
乾隆制造
》
售價:HK$
87.4
《
资治通鉴臣光曰辑存 资治通鉴目录(司马光全集)(全二册)
》
售價:HK$
304.4
編輯推薦:
久负盛名的Python入门经典
中文版累计销量200 000 册
针对Python 3全新升级
本书是经典的Python入门教程,层次鲜明、结构严谨、内容翔实,特别是后面几章,作者将前面讲述的内容应用到10个引人入胜的项目中,并以模板的形式介绍了项目的开发过程,手把手教授Python编程实践,让读者从项目中领略Python的真正魅力。
本书既适合初学者夯实基础,又能帮助Python程序员提升技能,即使是中高级Python程序员,也能从书里找到耳目一新的内容。
內容簡介:
本书包括Python程序设计的方方面面:首先从Python的安装开始,随后介绍了Python的基础知识和基本概念,包括列表、元组、字符串、字典以及各种语句;然后循序渐进地介绍了一些相对高级的主题,包括抽象、异常、魔法方法、属性、迭代器;此后探讨了如何将Python与数据库、网络、C语言等工具结合使用,从而发挥出Python的强大功能,同时介绍了Python程序测试、打包、发布等知识;*后,作者结合前面讲述的内容,按照实际项目开发的步骤向读者介绍了10个具有实际意义的Python项目的开发过程。
關於作者:
作者简介:
Magnus Lie Hetland
挪威科技大学副教授,教授算法;黑客,喜欢钻研新锐编程语言,是Python语言的坚定支持者。写过很多Python方面的书和在线教程,比如深受读者欢迎的网上教程Instant Python。表演专业的业余爱好者,从1985年首次登台至今,已经参演数十部话剧。
译者简介
袁国忠作者简介:
Magnus Lie Hetland
挪威科技大学副教授,教授算法;黑客,喜欢钻研新锐编程语言,是Python语言的坚定支持者。写过很多Python方面的书和在线教程,比如深受读者欢迎的网上教程Instant Python。表演专业的业余爱好者,从1985年首次登台至今,已经参演数十部话剧。
译者简介
袁国忠
自由译者;2000年起专事翻译,主译图书,偶译新闻稿、软文;出版译著40余部,其中包括《算法图解》《Head First JavaScript程序设计》《Python编程:从入门到实践》《C Prime Plus中文版》《CCNA学习指南》《CCNP ROUTE学习指南》《面向模式的软件架构:模式系统》《风投的选择:谁是下一个十亿美元级公司》等,总计700余万字;专事翻译前,从事过三年化工产品分析和开发,做过两年杂志和图书编辑。
目錄 :
第 1 章 快速上手:基础知识
1.1 交互式解释器
1.2 算法是什么
1.3 数和表达式
1.4 变量
1.5 语句
1.6 获取用户输入
1.7 函数
1.8 模块
1.8.1 cmath和复数
1.8.2 回到未来
1.9 保存并执行程序
1.9.1 从命令提示符运行 Python 脚本
1.9.2 让脚本像普通程序一样
1.9.3 注释
1.10 字符串
1.10.1 单引号字符串以及对引号转义
1.10.2 拼接字符串
1.10.3 字符串表示 str和 repr
1.10.4 长字符串、原始字符串和字节
1.11 小结
1.11.1 本章介绍的新函数
1.11.2 预告
第 2 章 列表和元组
2.1 序列概述
2.2 通用的序列操作
2.2.1 索引
2.2.2 切片
2.2.3 序列相加
2.2.4 乘法
2.2.5 成员资格
2.3 列表:Python的主力
2.3.1 函数 list
2.3.2 基本的列表操作
2.3.3 列表方法
2.4 元组:不可修改的序列
2.5 小结
2.5.1 本章介绍的新函数
2.5.2 预告
第 3 章 使用字符串
3.1 字符串基本操作
3.2 设置字符串的格式:精简版
3.3 设置字符串的格式:完整版
3.3.1 替换字段名
3.3.2 基本转换
3.3.3 宽度、精度和千位分隔符
3.3.4 符号、对齐和用 0填充
3.4 字符串方法
3.4.1 center
3.4.2 find
3.4.3 join
3.4.4 lower
3.4.5 replace
3.4.6 split
3.4.7 strip
3.4.8 translate
3.4.9 判断字符串是否满足特定的条件
3.5 小结
3.5.1 本章介绍的新函数
3.5.2 预告
第 4 章 当索引不通时
4.1 字典的用途
4.2 创建和使用字典
4.2.1 函数 dict
4.2.2 基本的字典操作
4.2.3 将字符串格式设置功能用于字典
4.2.4 字典方法
4.3 小结
4.3.1 本章介绍的新函数
4.3.2 预告
第 5 章 条件、循环及其他语句
5.1 再谈 print和 import
5.1.1 打印多个参数
5.1.2 导入时重命名
5.2 赋值魔法
5.2.1 序列解包
5.2.2 链式赋值
5.2.3 增强赋值
5.3 代码块:缩进的乐趣
5.4 条件和条件语句
5.4.1 这正是布尔值的用武之地
5.4.2 有条件地执行和 if语句
5.4.3 else子句
5.4.4 elif子句
5.4.5 代码块嵌套
5.4.6 更复杂的条件
5.4.7 断言
5.5 循环
5.5.1 while循环
5.5.2 for循环
5.5.3 迭代字典
5.5.4 一些迭代工具
5.5.5 跳出循环
5.5.6 循环中的 else子句
5.6 简单推导
5.7 三人行
5.7.1 什么都不做
5.7.2 使用 del删除
5.7.3 使用 exec和 eval执行字符串及计算其结果
5.8 小结
5.8.1 本章介绍的新函数
5.8.2 预告
第 6 章 抽象
6.1 懒惰是一种美德
6.2 抽象和结构
6.3 自定义函数
6.3.1 给函数编写文档
6.3.2 其实并不是函数的函数
6.4 参数魔法
6.4.1 值从哪里来
6.4.2 我能修改参数吗
6.4.3 关键字参数和默认值
6.4.4 收集参数
6.4.5 分配参数
6.4.6 练习使用参数
6.5 作用域
6.6 递归
6.6.1 两个经典案例:阶乘和幂
6.6.2 另一个经典案例:二分查找
6.7 小结
6.7.1 本章介绍的新函数
6.7.2 预告
第 7 章 再谈抽象
7.1 对象魔法
7.1.1 多态
7.1.2 多态和方法
7.1.3 封装
7.1.4 继承
7.2 类
7.2.1 类到底是什么
7.2.2 创建自定义类
7.2.3 属性、函数和方法
7.2.4 再谈隐藏
7.2.5 类的命名空间
7.2.6 指定超类
7.2.7 深入探讨继承
7.2.8 多个超类
7.2.9 接口和内省
7.2.10 抽象基类
7.3 关于面向对象设计的一些思考
7.4 小结
7.4.1 本章介绍的新函数
7.4.2 预告
第 8 章 异常
8.1 异常是什么
8.2 让事情沿你指定的轨道出错
8.2.1 raise语句
8.2.2 自定义的异常类
8.3 捕获异常
8.3.1 不用提供参数
8.3.2 多个 except子句
8.3.3 一箭双雕
8.3.4 捕获对象
8.3.5 一网打尽
8.3.6 万事大吉时
8.3.7 最后
8.4 异常和函数
8.5 异常之禅
8.6 不那么异常的情况
8.7 小结
8.7.1 本章介绍的新函数
8.7.2 预告
第 9 章 魔法方法、特性和迭代器
9.1 如果你使用的不是 Python 3
9.2 构造函数
9.2.1 重写普通方法和特殊的构造函数
9.2.2 调用未关联的超类构造函数
9.2.3 使用函数 super
9.3 元素访问
9.3.1 基本的序列和映射协议
9.3.2 从 list、dict和 str派生
9.4 其他魔法方法
9.5 特性
9.5.1 函数 property
9.5.2 静态方法和类方法
9.5.3 __getattr__、__setattr__等
方法
9.6 迭代器
9.6.1 迭代器协议
9.6.2 从迭代器创建序列
9.7 生成器
9.7.1 创建生成器
9.7.2 递归式生成器
9.7.3 通用生成器
9.7.4 生成器的方法
9.7.5 模拟生成器
9.8 八皇后问题
9.8.1 生成器的回溯
9.8.2 问题
9.8.3 状态表示
9.8.4 检测冲突
9.8.5 基线条件
9.8.6 递归条件
9.8.7 扫尾工作
9.9 小结
9.9.1 本章介绍的新函数
9.9.2 预告
第 10 章开箱即用
10.1 模块
10.1.1 模块就是程序
10.1.2 模块是用来下定义的
10.1.3 让模块可用
10.1.4 包
10.2 探索模块
10.2.1 模块包含什么
10.2.2 使用 help获取帮助
10.2.3 文档
10.2.4 使用源代码
10.3 标准库:一些深受欢迎的模块
10.3.1
sys
10.3.2 os
10.3.3 fileinput
10.3.4 集合、堆和双端队列
10.3.5 time
10.3.6 random
10.3.7 shelve和 json
10.3.8 re
10.3.9 其他有趣的标准模块
10.4 小结
10.4.1 本章介绍的新函数
10.4.2 预告
第 11 章 文件
11.1 打开文件
11.2 文件的基本方法
11.2.1 读取和写入
11.2.2 使用管道重定向输出
11.2.3 读取和写入行
11.2.4 关闭文件
1.2.5 使用文件的基本方法
11.3 迭代文件内容
11.3.1 每次一个字符(或字节)
11.3.2 每次一行
11.3.3 读取所有内容
11.3.4 使用 fileinput实现延迟行迭代
11.3.5 文件迭代器
11.4 小结
11.4.1 本章介绍的新函数
11.4.2 预告
第 12 章 图形用户界面
12.1 创建 GUI示例应用程序
12.1.1 初探
12.1.2 布局
12.1.3 事件处理
12.1.4 最终的程序
12.2 使用其他 GUI工具包
12.3 小结
第 13 章 数据库支持
13.1 Python数据库 API
13.1.1 全局变量
13.1.2 异常
13.1.3 连接和游标
13.1.4 类型
13.2 SQLite和 PySQLite
13.2.1 起步
13.2.2 数据库应用程序示例
13.3 小结
13.3.1 本章介绍的新函数
13.3.2 预告
第 14 章 网络编程
14.1 几个网络模块
14.1.1 模块 socket
14.1.2 模块 urllib和 urllib2
14.1.3 其他模块
14.2 SocketServer及相关的类
14.3 多个连接
14.3.1 使用 SocketServer实现
分叉和线程化
14.3.2 使用 select和 poll实现
异步 IO
14.4 Twisted
14.4.1 下载并安装 Twisted
14.4.2 编写 Twisted服务器
14.5 小结
14.5.1 本章介绍的新函数
14.5.2 预告
第 15 章 Python和 Web
15.1 屏幕抓取
15.1.1 Tidy和 XHTML解析
15.1.2 Beautiful Soup
15.2 使用 CGI创建动态网页
15.2.1 第一步:准备 Web服务器
15.2.2 第二步:添加 !#行
15.2.3 第三步:设置文件权限
15.2.4 CGI安全风险
15.2.5 简单的 CGI脚本
15.2.6 使用 cgitb进行调试
15.2.7 使用模块 cgi
15.2.8 简单的表单
15.3 使用 Web框架
15.4 Web服务:更高级的抓取
15.4.1 RSS和相关内容
15.4.2 使用 XML-RPC进行远程过程调用
15.4.3 SOAP
15.5 小结
15.5.1 本章介绍的新函数
15.5.2 预告
第 16 章 测试基础
16.1 先测试再编码
16.1.1 准确的需求说明
16.1.2 做好应对变化的准备
16.1.3 测试四步曲
16.2 测试工具
16.2.1 doctest
16.2.2 unittest
16.3 超越单元测试
16.3.1 使用 PyChecker和 PyLint检查源代码
16.3.2 性能分析
16.4 小结
16.4.1 本章介绍的新函数
16.4.2 预告
第 17 章 扩展 Python
17.1 鱼和熊掌兼得
17.2 简单易行的方式: Jython和IronPython
17.3 编写 C语言扩展
17.3.1 SWIG
17.3.2 手工编写扩展
17.4 小结
17.4.1 本章介绍的新函数
17.4.2 预告
第 18 章 程序打包
18.1 Setuptools基础
18.2 打包
18.3 编译扩展
18.4 使用 py2exe创建可执行程序
18.5 小结
18.5.1 本章介绍的新函数
18.5.2 预告
第 19 章 趣味编程
19.1 为何要有趣
19.2 编程柔术
19.3 原型设计
19.4 配置
19.4.1 提取常量
19.4.2 配置文件
19.5 日志
19.6 如果你已不胜其烦
19.7 如果你想深入学习
19.8 小结
第 20 章 项目 1:自动添加标签
20.1 问题描述
20.2 有用的工具
20.3 准备工作
20.4 初次实现
20.4.1 找出文本块
20.4.2 添加一些标记
20.5 再次实现
20.5.1 处理程序
20.5.2 处理程序的超类
20.5.3 规则
20.5.4 规则的超类
20.5.5 过滤器
20.5.6 解析器
20.5.7 创建规则和过滤器
20.5.8 整合起来
20.6 进一步探索
第 21 章 项目 2:绘制图表
21.1 问题描述
21.2 有用的工具
21.3 准备工作
21.4 初次实现
21.4.1 使用 ReportLab绘图
21.4.2 绘制折线
21.4.3 编写原型
21.5 再次实现
21.5.1 获取数据
21.5.2 使用 LinePlot类
21.6 进一步探索
第 22 章 项目 3:万能的 XML
22.1 问题描述
22.2 有用的工具
22.3 准备工作
22.4 初次实现
22.4.1 创建简单的内容处理程序
22.4.2 创建 HTML页面
22.5 再次实现
22.5.1 分派器混合类
22.5.2 将首部和尾部写入文件的方法以及默认处理程序
22.5.3 支持目录
22.5.4 事件处理程序
22.6 进一步探索
第 23 章 项目 4:新闻汇总
23.1 问题描述
23.2 有用的工具
23.3 准备工作
23.4 初次实现
23.5 再次实现
23.6 进一步探索
第 24 章 项目 5:虚拟茶话会
24.1 问题描述
24.2 有用的工具
24.3 准备工作
24.4 初次实现
24.4.1 ChatServer类
24.4.2 ChatSession类
24.4.3 整合起来
24.5 再次实现
24.5.1 基本的命令解释功能
24.5.2 聊天室
24.5.3 登录和退出聊天室
24.5.4 主聊天室
24.5.5 新的服务器
24.6 进一步探索
第 25 章 项目 6:使用 CGI进行远程编辑
25.1 问题描述
25.2 有用的工具
25.3 准备工作
25.4 初次实现
25.5 再次实现
25.5.1 创建文件名表单
25.5.2 编写编辑器脚本
25.5.3 编写保存脚本
25.5.4 运行编辑器
25.6 进一步探索
第 26 章 项目 7:自建公告板
26.1 问题描述
26.2 有用的工具
26.3 准备工作
26.4 初次实现
26.5 再次实现
26.5.1 编写脚本 main.cgi
26.5.2 编写脚本 view.cgi
26.5.3 编写脚本 edit.cgi
26.5.4 编写脚本 save.cgi
26.5.5 尝试使用
26.6 进一步探索
第 27 章 项目 8:使用 XML-RPC共享文件
27.1 问题描述
27.2 有用的工具
27.3 准备工作
27.4 初次实现
27.4.1 实现简单的节点
27.4.2 尝试使用
27.5 再次实现
27.5.1 创建客户端界面
27.5.2 引发异常
27.5.3 验证文件名
27.5.4 尝试使用
27.6 进一步探索
第 28 章 项目 9:使用 GUI共享文件
28.1 问题描述
28.2 有用的工具
28.3 准备工作
28.4 初次实现
28.5 再次实现
28.6 进一步探索
第 29 章 项目 10:自制街机游戏
29.1 问题描述
29.2 有用的工具
29.2.1 pygame
29.2.2 pygame.locals
29.2.3 pygame.display
29.2.4 pygame.font
29.2.5 pygame.sprite
29.2.6 pygame.mouse
29.2.7 pygame.event
29.2.8 pygame.image
29.3 准备工作
29.4 初次实现
29.5 再次实现
29.6 进一步探索
附录 A简明教程
附录 B Python参考手册
內容試閱 :
巨蟒剧团[ Monty Python,英国的一个超现实幽默表演团体,喜剧界的披头士,在20世纪70年代风靡全球。Python语言的命名来源于此。编者注]有首老歌唱道:又来了一个,它走了又来。又来了一个,什么时候是个头?自本书第2版面世以来,Python 3的普及程度得到了极大提高,因此这一版完全转向了Python 3。在此期间,还有其他的变化:在Python生态系统中,各种包轮番登场,各种编码实践大行其道后又日渐式微。在必要之处或对读者有帮助的前提下,本书的有些部分完全重写,但最初的痕迹还依稀可见。例如,本书前身Practical Python于21世纪初出版时,Usenet依然应用广泛,可现在大多数互联网用户可能从未听说过它。因此,对于第23章创建连接到NNTP服务器的项目,与其说是为了介绍主流编程生涯中将用到的编程技能,不如说是让读者了解一下历史。一些比较古怪的内容也依旧保留,因为它们是很不错的编程示例,也是本书悠长历史的见证。
与以往一样,我要深深地感谢让本书以前各版得以付梓的人。这里我要特别感谢Mark Powers,感谢他在我进度缓慢时极具耐心。还要感谢Michael Thomas,感谢他出色的技术审阅工作(并指出了原稿中所有的Python 2式print语句)。但愿你喜欢全新升级后的这一版。正如Terny Jones在提到那首老歌时所说:显然,有一个完整的管弦乐队会更好。
第2版前言
新版的《Python基础教程》终于和大家见面了。如果算上本书的前身Practical Python,实际上这已经是第3版了。这是我将近10年心血的结晶。在此期间,Python发生了很多有趣的变化,我也尽力调整了对这门语言的介绍。当前,Python处于长期以来最为翻天覆地的转变期:Python 3推出。编写本书期间,最终版本还未发布,但其包含的功能已确定,还推出了多个可用的版本。这次修订不向后兼容,这是我编写这一版时面临的最大挑战。换而言之,我不能仅仅挑出一些新增的功能进行介绍。另外,它还修改了一些既有的功能,因此有些在Python 2.5中理所当然的事情在新版本中已不再正确。
倘若整个Python社区都立即转向Python 3并修改所有的遗留代码,那根本不成问题。我只需介绍Python 3就行!然而,目前依然存在大量用Python 2编写的代码,而且大家可能还会继续编写这样的代码,直到有一天所有人都认为应使用Python 3。
那么我是如何应对这种变化的呢?首先,虽然有些向后兼容的变化,但Python语言本身总体变化不大。因此,如果完全针对Python 2.5,编写的内容对Python 3来说也是大体正确的(对Python 2.6来说更是如此)。至于那些不再正确的部分,我采取了比较保守的态度,因为大家完全接受Python 3还需要一段时间。因此,这一版主要是基于Python 2.5编写的,同时指出将会改变的情形。另外,我还提供了附录D,让你对重大变化有大致的了解。对大多数读者来说,这样处理是完全可行的。
编写这一版期间,有几个人帮了我很大的忙。与前两版(本书第1版以及之前的Practical Python)一样,Jason Gilmore扶我上马,并在项目启动期间扮演了重要角色。项目启动后,Richard Dal Porto、Frank Pohlmann和Dominic Shakeshaft不断伸出援手,保证项目得以顺利进行。在确保代码正确方面,Richard Taylor居功至伟(倘若代码依然存在错误,责任在我),而Marilyn Smith出色地完成了手稿润色工作。这里还要感谢Apress出版社的其他工作人员,他们是Liz Berry、Beth Christmas、Steve Anglin和Tina Nielsen。另外,感谢包括Bob Helmbold和Waclaw Kusnierczyk在内的读者提出勘误和宝贵的建议。最后,在本书前两版的出版过程中,很多人都提供了帮助,这里衷心地感谢他们。
第1版前言
几年前,Jason Gilmore找到我,让我为Apress出版社写本书。他看了我撰写的Python在线教程,想让我写一本风格类似的书。我受宠若惊,既兴奋又有点紧张。我最关心的是,这需要多长时间、对学业会有多大的影响,因为当时我正在读博士。结果表明,这是一项非常艰巨的任务,花费的时间远远超出了预期。
所幸这对我的学业没有太大的影响,我按时获得了博士学位。
去年,Jason又找到我说,Apress出版社想让我对原书进行修订和扩充,不知道我是否有兴趣。当时我正忙于熟悉新取得的副教授职位,而业余时间都花在了扮演Peer Gynt上,因此时间依然是主要的问题。事情安排妥当并有更多业余时间后,我接受了这项任务。你可能猜到了,最终的结晶就是你现在手捧的这本书。本书的大多数内容都来自Practical Python,但基于Python的最新变化做了全面修订,同时新增了几章。另外,根据这一版的组织结构,调整了原来一些内容的位置。很多读者对Practical Python提供了积极的反馈,但愿本版保留了读者喜欢的内容,同时新增的内容也能得到读者青睐。
本书编写期间,有几个人不断地给予我帮助和鼓励。没有他们,本书根本不可能付梓。这里对他们表示衷心的感谢。感谢本书编写期间直接与我协作的团队:Jason Gilmore让这个项目得以上马并确保不偏离方向;Beckie Stones整理各种材料;Jeremy Jones和Matt Moodie提供了专业的意见和见解;Linda Marousek对我极具耐心;还有其他成员让本书得以顺利出版。如果没有Practical Python打下的基础,本书不会是现在这个样子。这里要感谢Jason Gilmore和Alex Martelli出色的技术编辑工作(Jason负责全书,Alex负责前半部分)以及本职之外的各种意见和建议。感谢Erin Mulligan和Tory McLearn一路上领我前行,并在需要时让我调整方向。感谢Nancy Rapoport对手稿进行润色。感谢Grace Wong回答他人无法回答的问题。感谢Pete Shinners就项目10的游戏提供宝贵的建议。感谢多位读者的来信,这些来信给了我极大的鼓励!最后,感谢我的家人和朋友,尤其是女朋友Ranveig在本书编写期间给予的宽容。