Contents
哲思自由软件图书序
作者:徐继哲 <bill@zeuux.org>
- 2009年2月16日 北京
什么是自由软件?自由软件强调的是用户运行,学习,修改和发行软件的自由,而不是价格。具体来讲,自由软件赋予用户下面4个自由度:
0. 出于任何目的,运行软件的自由。 1. 学习软件如何工作,以及为了满足自己的需要修改软件的自由。(显然,这个自由度的前提是能够访问软件的源代码) 2. 为了帮助你的邻居,将软件拷贝给他的自由。 3. 为了能够让整个社区受益,公开发行改进之后的软件的自由。(显然,这个自由度的前提是能够访问软件的源代码)
- 在 1983年,Richard Stallman发起了自由软件运动。经过多年的努力,自由软件运动早已开花结果,在计算机工业、科学研究、教育、法律等领域都取得了巨大的成功,自由软件赋予了每个人运行、学习、修改和再发行软件的自由。现在,使用自由软件可以完成生活、工作中的各类任务,从构建服务器集群到个人计算机桌面,几乎无所不能。
- 自由软件运动所倡导的哲学思想再次提醒我们自由、平等和互助是人类社会不断向前发展的基础;在自由软件运动中诞生的对称版权(copyleft)为我们展示了全新的软件发行模式,在这一模式下,软件像知识一样被积累和传播,为人类造福;无数满怀激情的程序员创造了大量的优秀自由软件,比如:GNU、Linux、BSD、Apache、PostgreSQL、Python、Postfix等,众多优秀的公司,比如:Yahoo!、Google和新浪等,都建立在自由软件技术之上。
- 为了进一步促进自由软件在中国的发展,哲思社区启动了哲思自由软件图书计划。我们将创作一批优秀的自由软件图书,涉及的领域包括:自由软件哲学、技术、法律、经济、管理和人文等领域,以服务中国自由软件社区和IT产业。
- 社区是自由的、开放的,希望更都的朋友能够加入自由软件社区,一起协作创新!
徐继哲 <bill@zeuux.org>
- 2009年2月16日 下午 北京
- 哲思自由软件社区 创始人
the preface of <<Lovely Python(editon 1)>>
by Guido van Rossum
- Dear Reader,
- Congratulations on picking up a book on programming!
- Programming is the ultimate puzzle, and studying it will keep your mind fresh forever. That is certainly how it has worked for me: I have always had fun programming, and eventually this led me to create my own programming language, so that I could have even more fun. Python is one of the most fun programming languages around. It is incredibly flexible, and is very easy to learn -- this book teaches you how to write Python programs, even if you have never learned another programming language. In fact, Python is one of the easiest programming languages to learn, and definitely the most fun.
- Python is not just for beginners: professional programmers all over the world are having fun using Python in their work. For example, at Google (where I work) about 15% of all programs are written in Python. Programmers everywhere are having fun using Python for websites, games, databases, virtual reality, and so on.
- Of course I want everyone to have as much fun programming as I do, and that is why I have made Python free software. Python's source code can be downloaded for free by everyone in the world, and that's not all: you can also pass it around to others. This is the true open source spirit of free software: share your creations with everyone. I hope you will use Python to create something wonderful, and share it with the world.
- Even if you're not quite that ambitious, I assure you that you will have fun using Python and other free software like it.
- --Guido van Rossum
creator of Python & mentor of ZEUUX
《可爱的Python(第一版)》推荐序
- 作者:Guido van Rossum
- 亲爱的读者:
- 恭喜你挑选了一本关于编程的书!
- 编程要克服重重困难,因此学习编程将使你智慧永驻。我就是这样,编程让我获得了很多乐趣,这最终导致我创造了自己的编程语言,因此我获得了更多的乐趣。 Python是最有趣的编程语言之一。她非常灵活,而且非常易于学习。这本书将教你如何用Python编程,哪怕你还没有学过任何一门编程语言。事实上,Python是最容易学习的编程语言之一,当然也是最有趣的。
- Python不仅适合初学者,全世界众多的专业程序员正在使用Python语言,并享受其中。比如,在(我所工作的)Google公司,15%的程序是用Python写的。各地的程序员正在网站、游戏、数据库和虚拟现实等领域用Python编程,他们都非常快乐!
- 我当然希望每一个人都能像我一样享受编程的乐趣,这就是我将Python作为自由软件发布的原因。世界上的任何人都可以免费下载Python的源代码,不仅如此,你还可以把她传递给你周围的人。这就是自由软件的精神:和大家分享你的创新!我希望你将用Python创造一些美妙的东西,并和世人分享。
- 即使你没那么大的野心,也没关系,我敢打赌,在你使用Python和其他自由软件的过程中,一定会获得巨大的乐趣。
- --Guido van Rossum
- Python发明人、哲思社区顾问
书序
Python 是蕴含快乐编程思想的奇妙脚本语言,但是在中国程序员世界里并不为人所知,原因有很多; 本书试图使用一种比较草根的叙述形式来推广这一美好的语言, 决不教条或对比贬低其它"热门/主流"语言;-)
目标读者
- 本书假设读者有如下基本技能
- 英文1.618级 -- 认26字母,会查字典,有基本1024个单词量,可以使用简单的 Cnglish 同外国友人沟通
有至少一种计算机语言的编程经验,从 C 到 JavaScript 任何一种类型的计算机语言都可以.
- 本书假定读者有如下希求
- 期望有种工具语言可以快速解决日常的一些处理工作
- 期望有种快速语言可以立即验证自个儿的想法
- 期望有种胶水语言可以平滑的将旧有的各种系统统合在一起
- 期望...
那么,尝试Python 吧! 我们尽力将不同行业背景中喜欢上Python 的感觉包含在文字中传达给具有丰富好奇心和学习全新技术勇气的你.
内容组织
本书内容主要来自CPyUG(中文Python用户组)的邮件列表,虽已尽可能的让各方面的叙述完整无缺,但是笔者们都不是什么作家,完全是因为对Python 的热爱而组织起来,期望同中国的程序员们分享一下自个儿的快乐;所以,各种论述都带有很强烈的感情因素,而且因为篇幅所限无法深入讨论到Python 的各种高级特性上去;对于真正的高人,本书最多是个散文的随想录了;
因为Python 语言本身是种非常灵活的动态脚本语言,同一个目标可以使用多种方式完成,笔者们为了各种不同技术背景的读者可以快速无碍的理解,可能选择了种实际上比较笨拙的方式来实现功能,聪明的读者一定可以看出来的,那么请会心一笑,因为您已经和我们一样棒了!
本书结构
本书主要分成四部分:
- 第一部分 CDays 光盘实例故事
- 根据设定的自制光盘管理软件的剧情,分成10日讲述使用Python 从无到有自在的创建自个儿中意的软件的过程
习题解答: http://wiki.woodpecker.org.cn/moin/ObpLovelyPython/LpyAttAnswerCdays
精巧地址: http://bit.ly/XzYIX ; 下载地址: http://bit.ly/EGgXM
- 第二部分 KDays 实用网站开发故事
- 讲述如何 Pythonic 的运用即有框架在网络中解决实际问题;
习题解答: http://wiki.woodpecker.org.cn/moin/ObpLovelyPython/LpyAttAnswerKdays
精巧地址: http://bit.ly/axi7 ; 下载地址: http://bit.ly/naqE7
- 第三部分 Py初学者作弊条汇集
- 同Py日实例故事呼应,以精简模式讲述各个关键语言知识点;并提供各种实用代码片段;
- 分成以下几组:
环境篇 ; 分享各种Python常用环境的使用技巧
语法篇 ; 说明Python 语言最基础也的语法点
模块篇 ; 分享故事中涉及的各种常用模块的使用
框架篇 ; 介绍流行的几个Python Web应用框架
友邻篇 ; 分享一些在Python 开发之外的相关领域基础知识
代码下载: http://openbookproject.googlecode.com/svn/trunk/LovelyPython/PCS/
精巧地址: http://bit.ly/1IWqQW
- 第四部分 附录
- 对以上所有内容的总结,给读者提供另一种理解Python 的思维方式;
行者箴言 ; 行者们的言论...包含很多靠谱的经验的,不听白不听;-)
术语索引 ; 面对全新的动态对象脚本语言,不是各种术语是可以快速理解的,这里行者们尝试快速解说一下
Z践 ; 笔者记述的行者和编辑发生的各种故事
- 对以上所有内容的总结,给读者提供另一种理解Python 的思维方式;
本书行文体例
本书使用不同的体例来区分不同的情景.
- 文字体例
正文: 圆体 "Vera Sans YuanTi Mono" 等宽字
代码: Monaco 有灰底色,例如:print map(foo, range(10))
- 旁注: 楷体 有边框效果 前导符号 出现在旁白/页脚
- 程序体例
使用带有行数的代码引用
Toggle line numbers1 def foo(): 2 print "Love Python, Love FreeDome" 3 print "E文标点,.0123456789,中文标点,. "
- 文本体例
- 知识点引用:
{{{详细:: 表示以下内容出现在边注中 将涉及内容指向后面的 PCS* }}}
- 技巧警示:
{{{注意:: 表示以下内容出现在边注中 包含警告事项,可能涉及内容会指向后面的 PCS* }}}
- 附加说明:
{{{脚注:: 表示以下内容出现在脚注中 包含题外的信息,笔者心路,等等和正文有关,但是不直接的信息 }}}
- 精巧地址
- 本书包含很多外部网站的URL地址,但是图书必竟不是网页,读者无法点击进入相关网站;所以,笔者尝试使用URL精简工具来帮助读者可以快速输入自动跳转到原有网站来访问;
比如说: 本书的维基入口 http://wiki.woodpecker.org.cn/moin/ObpLovelyPython
精巧地址: http://bit.ly/2QA425
输入的字符量少了三倍! 这是借助 http://bit.ly 提供的网址精简服务达到的效果;
- 提醒:毕竟这是借用外国的免费服务进行的精简,如果读者输入后不能自动跳转的话,可能是网络问题也可能是服务问题,那就只能麻烦读者重新使用原有的URL进入了;
前言
如果以厨艺来作比喻的话:
- "Learning Python" Mark Lutz / David Ascher ~ 等入门教材图书,应该算 白米饭
- "Python in a Nutshell" Alex Martelli ~ 等手册参考大书,应该算 大盘的素菜/汤
- "Dive Into Python" Mark Pilgrim ~ 等技术精解图书,应该算 极入味的 荤菜
- "Text Processing in Python" David Mertz ~ 等专门领域的详解图书,应该算风味名吃
众所周知:不吃主食得饿死的,不食蔬菜要生病的,光吃大荤一样没救的!到地头不来点风味会水土不服地;
"Lovely Python" 就是下酒的老醋花生,解酒的胡辣汤,下饭的泡菜!
PS: 中国特种部队野外装备里是使用 涪凌榨菜 作综合性盐/矿物质/维生素 补充品的
本书总结中国一批先学先用了Python的行者们的亲身体验,为从来没有听说过Python 的人,准备的一份实用的导学性图书;
- 试图将优化后的学习体验,通过故事的方式传达给只有学校系统学习体验的读者,同时也分享了蟒样(Pythonic)的知识获取技巧;
- 试图将最常用的代码和思路,通过 作弊条(Cheat Sheet~提示表单) 的形式分享给有初步基础的Python 用户,来帮助大家多快好省的完成功能;
"Lovely Python" 期望成为学习使用Python 的同好们的沟通话题,引发进一步的学习/应用/创造/推广!
{{{脚注:: 名词解释:行者 (1)∶佛教语. 即“头陀”. 行脚乞食的苦行僧人;又指方丈的侍者及在寺院服杂役尚未剃发的出家者 (2)∶泛指修行佛道之人 (3)∶《西游记》中孙悟空的别名 在啄木鸟Python技术社区 http://wiki.woodpecker.org.cn/moin/WoodpeckerHackers (精巧地址:http://bit.ly/TUzr3) 被借用成为Hacker 的中文专用词, 意指在自由软件技术世界不断探寻前行的学习者... }}}
本书阅读技巧
- Pythonic
-- 简单的说就是使用Python 的思维去解决问题的态度,记住Python 就是Python, 如果你拿JAVA 的思路和方式来使用Python 不是不可以,而是会得不偿失的...详细的,大家跟着内容蹓一圏,再和以往使用其它语言解决类似问题时的过相比较就知道了
- 本书不是教材,不要期望可以根据本书泡制出考试大纲来获得什么认证
现实生活中的各种需求,不会根据教材的编制来要求的;所以,一切从需求出发,关注数据的处理,快速使用即有功能来完成愿望才是 Pythonic 的真髓!
- 建议阅读态度
- 学习Python 不是什么大事儿 -- 和学习自行车类似,千万不要用学汽车的劲头来学习自行车:"非要先会拆修自行车了才敢骑行" -- 非要将Python 的所有语法规则学完之后才敢真正使用Python 来解决实际问题; 反了!其实这才是本末倒置的
- 记住学习的目的就是要解决实际问题,如果一个语言的技法看不出与你现在的问题有关,就先甭理她! 看的多用的多了自然就会在合适的时机使用了,真的! ~ 这和学习英语时所谓“语感”类似的;)
- 跟着实例故事走,不要想当前问题以外的事儿,依照眼前问题的解决顺序来逐步学习--虚无缥缈的语法规则是最难记忆的,只有和具体问题的解决绑定,才记的牢!
- 看似零散的知识点,其实都是相通的,好比任何计算都可以归结为加减运算一样,不论多高深的技法,都可以使用粗浅直白的代码来完成相同的工作, **任何简陋但是可运行的代码,都比精致美观但是无法运行的代码要好!**
- 所以,背好唐诗三百首,不会作诗也会吟! 背好英语900句,不会作文也得分!
- 甭总想着要跟着一个完美的教程走完才可以成为Pythoner; 其实常见问题的处置代码看熟了,想不会写Py脚本也难了!
代码阅读技巧
没有技巧!
- 只要将代码copy 到你的机器中运行,然后保持好奇心,有针对性的尝试小小修改一点,立即运行一下,看是否吻合自个儿的预想,就是最好的代码阅读技法!
- Python 被设计成友好的,容易理解和使用的脚本语言,最好的学习方式就是使用之!期望大家在尝试后,平常也注意积累一些自个儿中意的代码片段,如果可以进一步分享回来那就太好了!
本书的所有代码都可以使用SVN(Subversion)公开的下载:
下载地址: http://openbookproject.googlecode.com/svn/trunk/LovelyPython/
可爱的Python 图书源码目录约定:
LovelyPython/ +-- CDays (CDays 实例故事代码) +-- KDays (KDays 实例故事代码) +-- PCS (Python Cheat Sheet ~ Python 作弊条 内容) +-- exercise (各章练习,按照章节对应收集) \-- pages (图书正文 维基格式文本目录)
{{{注意:: SVN(Subversion) 是一个流行的非常强大的版本管理系统,使用手册在:
一般讲使用官方社区提供的图形化工具--TortoiseSVN(优秀的免费开源客户端)可以非常自然的在桌面上使用远程版本仓库,使用手册在:
访问地址: http://svndoc.iusesvn.com/tsvn/1.5/ 精巧地址: http://bit.ly/uPrd 下载地址: http://tortoisesvn.net/downloads
}}}
提醒:
- 如果读者下载了相关代码时,发觉和图书中引用的代码有不同,不要惊奇,那是勤劳的行者们,在不断的优化实例代码!
反馈渠道
本书是开放的,永远接受各种建议,看不过眼的聪明的读者可以直接在本书的专用邮件列表上进行交流,这样也许下一版的图书就有你的贡献了.
- 如果发现本书内容上任何方面的错误,行者们都将倾情接受指教;-) 别有心得的读者,任何时候想改进/改正/改善/改革本书的文字/代码/图片,都可以加入到图书专用讨论列表来,汇同行者们一齐来完善这本有趣的好书!
- 提供方式与行者们沟通:
- 在线资源
邮件列表: http://www.zeuux.org/mailman/listinfo/zeuux-python
精巧地址: http://bit.ly/3rJucf
- 订阅后,就可以和所有本书的读者以及作者,以及所有订阅了此列表的中国Pythoner们分享图书以及Pythonic体验了!
意见反馈:http://code.google.com/p/openbookproject/issues
精巧地址: http://bit.ly/U5fAB
- 使用方式: 通过Google 公司提供的项目管理管理环境,使用提案(Issue)的方式来提交意见,相关使用文档:
快速使用Issue教程: http://code.google.com/p/openbookproject/wiki/UsageIssue
精巧地址: http://bit.ly/xxSHq
Issue标签详解 http://code.google.com/p/openbookproject/wiki/IssueTags
精巧地址: http://bit.ly/DOCdK
Issue流程概述 http://code.google.com/p/openbookproject/wiki/IssueFlow
精巧地址: http://bit.ly/IXkNt
针对本书的各方面,自由提出看法,我们会认真处理,并及时同步到在线版本的图书中,持续修订到再版就可以将你的建议合并进来, 谢先
反馈Issue 样例:
标题:[LovPy]PCS304 AbtEurasia 增补缺少的,, 正文: 现在内容: Eurasia 项目沿革 中,,, "不过后来我们的团队很快编写了上百万行的智能," 修订建议: 增补上下文,好象没有说完! 以及,作者简介也没有完成,,, 理由: 读不通
访问地址: http://code.google.com/p/openbookproject/issues/detail?id=1000
精巧地址: http://bit.ly/aa0F