资源预览内容
第1页 / 共89页
第2页 / 共89页
第3页 / 共89页
第4页 / 共89页
第5页 / 共89页
第6页 / 共89页
第7页 / 共89页
第8页 / 共89页
第9页 / 共89页
第10页 / 共89页
亲,该文档总共89页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
深入 Python 编程 (预览版,0.1) 作者保留本书的全部权利! 前言 嗯,这个地方一般用来说一些无关紧要但又不得不说的废话。 在很久以前,我还在兴奋地研究 Delphi/VCL。有个在金山的朋友告诉我他选择 Python 作为下一 门语言,那是我第一次听到这个名字。后来又陆陆续续在程序员杂志上看过几篇介绍文章。老 实说,我最初并不看好 “脚本语言“,这可能源自 97 年被 Perl 吓到的经历。我喜欢那种严谨具有学 院风格的语言,比如 Pascal。在 MS-DOS 时代,我就是被 Pascal 带入门槛的。 再往后接触 Python,已经是 2006 年,因为当时还在迷恋 .NET/C#,所以并没有什么实质性的结 果。直到 2 年前,我纠结着要从 Windows 平台转入 Linux。 从 .NET 1.0 开始,一直到 4.0,大大小小写了几百篇技术文字。从 C# 语言到 FX/BCL,还有 MSIL、SOS.dll,以及 MVC、LINQ 的流程分析,甚至是加密破解,Metadata 手工修复。个人感 觉还是比较深入和全面的。也正因为如此,对 .NET 愈发臃肿的发展趋势颇为不满。加上工作的原 因,需要将开发平台转移,急需找个接替者,Python 此时作为一个多面手顺利进入我的世界。 因为有 C 和 ASM 的底子,加上十几年的开发经验,我没有费太多的功夫就上手开始工作。2 年 后,我重新整理这期间所有的学习心得,打算为 Python 添砖加瓦,顺便为国内不旺的人气添几把 干柴,如此就有了这本书。 本书的定位介于入门和精通之间 深入。因此需要读者有一定的 Python 编程经验,起码看过 几本经典入门书籍,并写过一些代码。 个人推荐 Learning Python, 4th Edition作为入门书籍,貌似有中文版 (没看过,不知道翻译 质量如何,我个人比较倾向于看英文版)。该书系统而全面地介绍了 Python 语言开发的各个方面, 让您对 Python 有个完整的认识。其中某些复杂的东西可能还很模糊,没关系,这就是我这本书要 完成的工作。最后呢,陈儒大仙的Python 源码剖析 深度探索动态语言核心技术就是 “葵 花宝典“ 级别的东西了。 ?入门:Learning Python, 4th Edition ?深入:深入 Python 编程 ?精通:Python 源码剖析 好吧,折腾完这三步,您在简历上写 “精通 Python 语言“ 就多了些底气。 这本书着重点还是 “Python 编程“,对 Python 虚拟机以及源码级别的东西点到为止,只求能诠释 理论实现的过程,而非完整剖析源码(这活陈儒大仙已经做得非常好了)。您最好能阅读一些 C 代 码,这样有助于更好地理解。当然,我尽可能添加详细的注释说明。 本书分为三个部分: 深入 Python 编程预览版 雨痕 2 1.Python 语言 深入说明语言层面的知识和理论,包括 CPython 虚拟机的一些知识。重要的是,我们应该如何探 究一种语言的理论实现,而不仅仅是背诵一些文字规则。 2.Python 标准库 编程不仅仅是语言的事,我们总是需要各种各样的数据结构、框架来完成应用开发和部署。提供一 套相对完整而高效的标准库已经是当前所有新兴语言的 “标准“。 3.第三方库 Python 拥有上万种各种各样的第三方库。夸张点说:“只有想不到的,没有找不到的“。其中诸如 gevent、tornado 等优秀的第三方库和框架能让你的开发工作有个更高的起点。 强烈建议 Pythoner 要经常去国外的一些论坛溜达,很多优秀的资源少为人知,非常可惜。 在写这本书的时候,我将遵循一些基本的原则: 代码能说清楚的,就不要写太多废话。 代码尽可能简单,便于阅读。 本书将在网上发布预览版,希望各位神仙大牛们不吝赐教。作者本人颇有些心虚,生怕自身不足生 出误导和完全错误的表达。敬谢! 联系方式: ?email: qyuhenhotmail.com ?msn: qyuhenhotmail.com (通常用于工作用途,可能不会回复) ?QQ: 1620443 (移动的时候也能用) ?weibo: http:/weibo.com/qyuhen (这个好,灌水聊天皆可) 另,因工作时间和个人作息习惯问题,如不能及时回复,敬请谅解。 ?雨痕 Q.yuhen ?2012-01-11 深入 Python 编程预览版 雨痕 3 更新记录 2011-02-09 第一章截稿,发布预览版 0.1。 深入 Python 编程预览版 雨痕 4 目录 第一部分 Python 语言?7 第 1 章 基础?8 1.1 基本工具?8 1.1.1 IPython?8 1.1.2 Pdb / iPdb?18 1.2 常用函数?23 1.3 环境初始化?25 1.3.1 State?28 1.3.2 Types?30 1.3.3 _builtin_ module?32 1.3.4 sys module?33 1.3.5 _main_ module?35 1.3.6 site module?36 1.3.7 Run?37 1.4 名字和名字空间?39 1.4.1 名字空间?40 1.4.2 名字访问方式?42 1.4.2 对性能的影响?45 1.5 类型和对象?49 1.5.1 对象的内存布局?49 1.5.2 类型对象?52 1.6 内存管理?56 1.6.1 内存分配?56 1.6.2 弱引用?63 深入 Python 编程预览版 雨痕 5 1.6.3 垃圾回收?66 1.7 编译和反编译?75 1.7.1 编译?75 1.7.2 反编译?82 1.7.3 动态执行?84 1.7.4 代码混淆?87 1.8 小结?89 第 2 章 内置类型?90 第 3 章 表达式?91 第 4 章 函数?92 第 5 章 迭代器?93 第 6 章 模块?94 第 7 章 类?95 第 8 章 异常?96 第 9 章 Descriptor?97 第 10 章 Decorator?98 第 11 章 Metaclass?99 第二部分 Python 标准库?100 第三部分 第三方库?101 深入 Python 编程预览版 雨痕 6 第一部分 Python 语言 不要误会,我不会象大多数书那样去慢条斯理地逐个介绍语法。我们要面对的是一次探险旅程。 收拾工具,整理好行囊,你将是探险团队中的重要一员。我们有计划,但时时刻刻都可能面临 “惊 心动魄“ 的状况。你可能要一头扎入源码里寻幽探秘,也或者是在调试器里面对一堆十六进制数字 发呆。 总之,不要指望这本书会按常规出牌,我希望能有惊悚小说那样的节奏和快感,免得大家翻几页后 就丢在一旁,白白浪费了金钱和时间,还可能成为家里的卫生死角。 个人建议,在看本书的同时,把你喜欢的经典书籍放在旁边 (我喜欢纸质书,看电子书无法专心) 互 为参考。 好吧,让我们开始探索 Python 语言的秘密。我们的目标是:刨出个二五八万来。 - Q.yuhen: 老实说,写这些废话比写代码困难多了 深入 Python 编程预览版 雨痕 7 第 1 章 基础 标题虽然叫 “基础“,但内容却不简单。在本章,我们要为我们的探险旅程打包所有的行李和工具, 也就是所谓 “利其器“。如果你没有 Python 编程经验,或者刚刚做完简单的入门 Tour,那么可能 会被吓到。 Python 让编程变得简单和享受,但其自身的实现却相当复杂。在我们习以为常的简单优雅背后隐 藏了大量的理论和技巧。如果能深入了解这些原理、实现以及限制,可以让我们在开发过程中避免 诸多麻烦,绕开不必要的错误陷阱,有效提高代码质量和执行效率。 首先你需要准备如下环境: ?Linux 或 OS X(当然也可以是 Windows。本书使用 OS X Lion 10.7.3) ?Python 2.7 (本书所分析的都是 CPython 实现,http:/www.python.org) ?IPython 0.12 (比 Python 更好用的交互环境,支持代码补全和高亮) ?IPdb (可选,使用 easy_install 安装,比内置的 pdb 包更好用些) ?GDB (GCC 带的调试器) ?记得从官方网站下载一份源码 (本书使用的是 2.7.2),我们在后面的分析过程中会用到。 需要强调的是,本书是针对官方 CPython 版本的分析,Jython 和 IronPython 因各自虚拟机平台 的实现异同而导致完全不同的底层数据结构和执行机制。当然,相关理论知识还是共通的。 1.1 基本工具 好了,在我们开始 “折腾“ 前,先练习一下手头工具的使用方法,以便在后面的旅途中能坚持下来。 1.1.1 IPython 比起 Python 自带的命令行交互环境,IPython 要强大许多,各种各样的 Magic Function 让我们 可以轻松完成很多工作。比如命令和成员自动完成,查看对象帮助信息、源码等等。你甚至可以把 IPython 当作一种特殊的 IDE 来用。 我习惯于在 IPython 上随手写些实验代码,研究新发现的资源,或者直接当作 *nix Shell 使用。我 觉得学习 Python 并不适合用 PyCharm 这类可视化 IDE 环境。静下心来,直接面对终端,将注意 力集中在代码上。在 *nix 下工作时,并不总是有 IDE 这样奢侈的工作环境。对于被宠坏的家伙 们,我们应该让他习惯在终端模式下用 VIM。当然,这并不表示我反对使用 IDE,毕竟提高生产力 的东西总归是好的,重要的是适可而止,别折腾了 n 年,连个函数名都没记清楚。话说我见过一 些 .NET 程序员,在 Visual Studio .NET 里面用 Console.WriteLine 来完成调试工作,这不能不说 是 IDE 开发者的 “杯具“。 深入 Python 编程预览版 雨痕 8 不要多,我们先掌握几个基本的 IPyhton Magic Function 用法就行。作为在终端下生存的一员, 要习惯 help、man 等命令。 命令说明 %quickrefIPython 使用快速导引 ?, ?查看对象、MagicFunction 等信息 !执行 Shell Command %sc, %sx捕获 Shell Command 输出结果 %pwd 查看当前工作目录 %cd 工作目录跳转 %pushd, %popd, %dirs 目录栈操作 %bookmark 目录书签 %save 保存操作历史 %logstart, . %logstoplog 记录器 %edit 编辑源码文件 %pycat, %pfi le 显示源码 %who, %whos 查看当前环境下的所有对象 %run 执行源码文件 %prun, %time, %timeit 性能测试 %pdb 开打或关闭调试器 %reset 重置执行环境,删除全部变量 %quit退出 IPython 随时可以用 键做代码自动完成,多数时候可以省略 Magic Function 的 “%“ 前缀符号。 $ ipython Python 2.7.1 (r271:86832, Jun 16 2011, 16:59:05) Type “copyright“, “credits“ or “license“ for more information. IPython 0.12 - An enhanced Interactive Python. ? - Introduction and
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号