LovelyPython 09.08.27 documentation

Version: 09.08.27
[首页]

可爱的Python

~ 首本原创中文 Pythonic 体验入门图书

人生苦短,我用Python!

出版ed

  • 作者: 哲思社区 保留电子在线出版权力,特此发布.
  • 出版社:电子工业出版社
  • ISBN:9787121085147
  • 出版日期:2009 年9月
  • 开本:16开
  • 页码:462
  • 版次:1-1
  • 首发: china-pub

概述

  • Zoom.Quiet 创意并组建团队
  • 完全由 CPyUG 成员自发组织完成

章节索引

书前

Contents:

哲思自由软件图书序

什么是自由软件?自由软件强调的是用户运行,学习,修改和发行软件的自由,而不是价格。具体来讲,自由软件赋予用户下面4个自由度:

0. 出于任何目的,运行软件的自由。
1. 学习软件如何工作,以及为了满足自己的需要修改软件的自由。(显然,这个自由度的前提是能够访问软件的源代码)
2. 为了帮助你的邻居,将软件拷贝给他的自由。
3. 为了能够让整个社区受益,公开发行改进之后的软件的自由。(显然,这个自由度的前提是能够访问软件的源代码)

在 1983年,Richard Stallman发起了自由软件运动。经过多年的努力,自由软件运动早已开花结果,在计算机工业、科学研究、教育、法律等领域都取得了巨大的成功,自由软件赋予了每个人运行、学习、修改和再发行软件的自由。现在,使用自由软件可以完成生活、工作中的各类任务,从构建服务器集群到个人计算机桌面,几乎无所不能。

  • 自由软件运动所倡导的哲学思想再次提醒我们自由、平等和互助是人类社会不断向前发展的基础;在自由软件运动中诞生的对称版权(copyleft)为我们展示了全新的软件发行模式,在这一模式下,软件像知识一样被积累和传播,为人类造福;无数满怀激情的程序员创造了大量的优秀自由软件,比如:GNU、Linux、BSD、Apache、PostgreSQL、Python、Postfix等,众多优秀的公司,比如:Yahoo!、Google和新浪等,都建立在自由软件技术之上。
  • 为了进一步促进自由软件在中国的发展,哲思社区启动了哲思自由软件图书计划。我们将创作一批优秀的自由软件图书,涉及的领域包括:自由软件哲学、技术、法律、经济、管理和人文等领域,以服务中国自由软件社区和IT产业。
  • 社区是自由的、开放的,希望更都的朋友能够加入自由软件社区,一起协作创新!

徐继哲 <bill@zeuux.org>

preface by Guido van Rossum

~ of <<Lovely Python(editon 1)>>

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 是蕴含快乐编程思想的奇妙脚本语言,但是在中国程序员世界里并不为人所知,原因有很多; 本书试图使用一种比较草根的叙述形式来推广这一美好的语言, 决不教条或对比贬低其它"热门/主流"语言;-)

def foo():
    print "Love Python, Love FreeDome"
    print "E文标点,.0123456789,中文标点,. "
目标读者
本书假设读者有如下基本技能::
  • 英文1.618级 -- 认26字母,会查字典,有基本1024个单词量,可以使用简单的 Cnglish 同外国友人沟通
  • 有至少一种计算机语言的编程经验,从 C 到 JavaScript 任何一种类型的计算机语言都可以.
本书假定读者有如下希求::
  • 期望有种工具语言可以快速解决日常的一些处理工作
  • 期望有种快速语言可以立即验证自个儿的想法
  • 期望有种胶水语言可以平滑的将旧有的各种系统统合在一起
  • 期望...

那么,尝试Python 吧! 我们尽力将不同行业背景中喜欢上Python 的感觉包含在文字中传达给具有丰富好奇心和学习全新技术勇气的你.

内容组织

本书内容主要来自 CPyUG (中文Python用户组)的邮件列表,虽已尽可能的让各方面的叙述完整无缺,但是笔者们都不是什么作家,完全是因为对Python 的热爱而组织起来,期望同中国的程序员们分享一下自个儿的快乐;所以,各种论述都带有很强烈的感情因素,而且因为篇幅所限无法深入讨论到Python 的各种高级特性上去;对于真正的高人,本书最多是个散文的随想录了;

因为Python 语言本身是种非常灵活的动态脚本语言,同一个目标可以使用多种方式完成,笔者们为了各种不同技术背景的读者可以快速无碍的理解,可能选择了种实际上比较笨拙的方式来实现功能,聪明的读者一定可以看出来的,那么请会心一笑,因为您已经和我们一样棒了!

本书结构

本书主要分成四部分:

第一部分 CDays 光盘实例故事::
第二部分 KDays 实用网站开发故事::
第三部分 Py初学者作弊条汇集::
  • 同Py日实例故事呼应,以精简模式讲述各个关键语言知识点;并提供各种实用代码片段;
  • 分成以下几组:
    1. 环境篇 ; 分享各种Python常用环境的使用技巧
    2. 语法篇 ; 说明Python 语言最基础也的语法点
    3. 模块篇 ; 分享故事中涉及的各种常用模块的使用
    4. 框架篇 ; 介绍流行的几个Python Web应用框架
    5. 友邻篇 ; 分享一些在Python 开发之外的相关领域基础知识
  • 代码下载: http://openbookproject.googlecode.com/svn/trunk/LovelyPython/PCS/
第四部分 附录::
  • 对以上所有内容的总结,给读者提供另一种理解Python 的思维方式;
    1. 行者箴言 ; 行者们的言论...包含很多靠谱的经验的,不听白不听;-)
    2. 术语索引 ; 面对全新的动态对象脚本语言,不是各种术语是可以快速理解的,这里行者们尝试快速解说一下
    3. Z跋 ; 笔者记述的行者和编辑发生的各种故事

注意

SVN(Subversion) 是一个流行的非常强大的版本管理系统,使用手册在:

一般讲使用官方社区提供的图形化工具--TortoiseSVN(优秀的免费开源客户端)可以非常自然的在桌面上使用远程版本仓库,使用手册在:

本书行文体例

本书使用不同的体例来区分不同的情景.

字体设定

除非浏览器支持 HTML5 的服务端字体,否则只能是印刷的设定了

  • 正文: 文泉驿正黑体 "wqy-zenhei"
  • 代码: Monaco 有灰底色,例如:print map(foo, range(10))
  • 旁注: 有边框效果 前导符号 出现在旁白/页脚
精巧地址

本书包含很多外部网站的URL地址,但是图书必竟不是网页,读者无法点击进入相关网站;所以,笔者尝试使用URL精简工具来帮助读者可以快速输入自动跳转到原有网站来访问;

  • 比如说: 本书的维基入口 http://wiki.woodpecker.org.cn/moin/ObpLovelyPython
  • 精巧地址: http://bit.ly/2QA425
  • 输入的字符量少了三倍! 这是借助 http://bit.ly 提供的网址精简服务达到的效果;
  • 提醒:毕竟这是借用外国的免费服务进行的精简,如果读者输入后不能自动跳转的话,可能是网络问题也可能是服务问题,那就只能麻烦读者重新使用原有的URL进入了;
程序体例

使用有语法颜色的代码引用

def foo():
    print "Love Python, Love FreeDome"
    print "E文标点,.0123456789,中文标点,. "
文本体例

技巧警示:

Note

(~_~)

  • This icon signifies a tip, suggestion, or general note.

Warning

(#_#)

  • 警告得注意的...

See also

(^.^)

  • 指向参考的...

附加说明:

进一步的

包含题外的信息,笔者心路,等等和正文有关,但是不直接的信息

名词解释:

是也乎是也乎
  • 可以这么解释吧;
  • 也可以这么来吧;

知识引用:

  • 使用边注
  • 追随正文
  • 活动説明
  • 效果如右

前言

如果以厨艺来作比喻的话:

  • "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 的同好们的沟通话题,引发进一步的学习/应用/创造/推广!

本书阅读技巧

Pythonic ~简单的说就是使用Python 的思维去解决问题的态度,记住Python 就是Python, 如果你拿JAVA 的思路和方式来使用Python 不是不可以,而是会得不偿失的...详细的,大家跟着内容蹓一圏,再和以往使用其它语言解决类似问题时的过相比较就知道了 ;-)

  • 本书不是教材,不要期望可以根据本书泡制出考试大纲来获得什么认证
  • 现实生活中的各种需求,不会根据教材的编制来要求的;所以,一切从需求出发,关注数据的处理,快速使用即有功能来完成愿望才是 Pythonic 的真髓!

建议阅读态度: ~ 学习Python 不是什么大事儿 -- 和学习自行车类似,千万不要用学汽车的劲头来学习自行车:"非要先会拆修自行车了才敢骑行" -- 非要将Python 的所有语法规则学完之后才敢真正使用Python 来解决实际问题; 反了!其实这才是本末倒置的

  1. 记住学习的目的就是要解决实际问题,如果一个语言的技法看不出与你现在的问题有关,就先甭理她! 看的多用的多了自然就会在合适的时机使用了,真的! ~ 这和学习英语时所谓“语感”类似的;)
  2. 跟着实例故事走,不要想当前问题以外的事儿,依照眼前问题的解决顺序来逐步学习--虚无缥缈的语法规则是最难记忆的,只有和具体问题的解决绑定,才记的牢!
  3. 看似零散的知识点,其实都是相通的,好比任何计算都可以归结为加减运算一样,不论多高深的技法,都可以使用粗浅直白的代码来完成相同的工作, 任何简陋但是可运行的代码,都比精致美观但是无法运行的代码要好!
  • 所以,背好唐诗三百首,不会作诗也会吟! 背好英语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 (图书正文 维基格式文本目录)

提醒:
  • 如果读者下载了相关代码时,发觉和图书中引用的代码有不同,不要惊奇,那是勤劳的行者们,在不断的优化实例代码!
反馈渠道

本书是开放的,永远接受各种建议,看不过眼的聪明的读者可以直接在本书的专用邮件列表上进行交流,这样也许下一版的图书就有你的贡献了.

  • 如果发现本书内容上任何方面的错误,行者们都将倾情接受指教;-) 别有心得的读者,任何时候想改进/改正/改善/改革本书的文字/代码/图片,都可以加入到图书专用讨论列表来,汇同行者们一齐来完善这本有趣的好书!
  • 提供方式与行者们沟通:

在线资源:

  • 精巧地址: http://bit.ly/3rJucf
  • 订阅后,就可以和所有本书的读者以及作者,以及所有订阅了此列表的中国Pythoner们分享图书以及Pythonic体验了!
  • 精巧地址: http://bit.ly/U5fAB
  • 使用方式: 通过Google 公司提供的项目管理管理环境,使用提案(Issue)的方式来提交意见,相关使用文档:
  • 针对本书的各方面,自由提出看法,我们会认真处理,并及时同步到在线版本的图书中,持续修订到再版就可以将你的建议合并进来, 谢先 ;-)
  • 反馈Issue
标题:[LovPy]PCS304 AbtEurasia 增补缺少的,,
正文:
现在内容:
  Eurasia 项目沿革 中,,,
  "不过后来我们的团队很快编写了上百万行的智能,"
修订建议:
  增补上下文,好象没有说完!
  以及,作者简介也没有完成,,,
理由:
  读不通

感谢

想找本轻松言之有物的技术入门书,是非常困难的事儿;反推之,想写成一本有趣并有用的入门书也一准是非常困难的一件事儿;

这本书之所以可以诞生,不是个人的意志决定的,是由Python 这门优秀语言自身的巨大吸引力凝聚而成的一大批中国Pythoner 共同意识促生的!

真的!这本书的完成,要感谢的太多了! 所以,专门组织了这一独立章节,进行认认真真的``感谢``

人物

Guido van Rossum:

  • _images/beginning-1-zeuux-fashion-guido.jpg
  • 后排穿"人生苦短 我用Python" 字样T裇的帅大叔就是!

  • 饮水不忘挖井人,如果没有 Guido 蟒爹一时兴起挖出的这泓灵泉,就没有这本书了;-)

让我们一齐感谢他!支持他!推广他的 "Simple is better" 世界观!

topic

此T裇由哲思自由软件社区设计并发售: 访问地址:http://www.zeuux.org/community/fashion/fashion.cn.html 精巧地址:http://bit.ly/1QjO0K

题词 No matter where you go, there you are.

—Buckaroo Banzai

Note

此T裇由哲思自由软件社区设计并发售: 访问地址:http://www.zeuux.org/community/fashion/fashion.cn.html 精巧地址:http://bit.ly/1QjO0K

社区

啄木鸟Python社区:: 由来自五湖四海,为了一个共同的革命目标--推广Python在中国的学习和应用--聚集在一起的行者形成. 今天已经领导着超过5000人口的根据地,但是相对中国的程序员群体而言还不够,还需要更大些,才能真正促成全国软件界的思想解放.

  • 访问地址: http://www.woodpecker.org.cn
  • 在此基础上又成立了以 *PyUG 为名的一批区域性Python用户组,主要的活动形式是线上列表讨论,项目组织,以及线下的``会课``--在各个城市的Python 爱好者自发组织的一种线下进行的会面及技术课题交流活动--主要在北京和上海进行,从08年起珠三角/南昌/安徽/武汉各地也相继开展;比较活跃的有:
  • CPyUG ~ 中文Python 用户组,是最早成立的邮件列表之一,因其开放自由热情的讨论风格逐渐形成最有人气的中文Python 技术讨论列表!
  • BPyUG ~ 北京Python 用户组,形成了良好的不定期会课制度,组织Python 行者们当面交流
  • ZPyUG ~ 珠三角地区Python 用户组,由 Zoom.Quiet 南下发起,同样以会课为主要形式进行线下交流

CZUG.org:: China Zope User Group ~ 中国Zope用户组;

  • 访问地址: http://czug.org
  • Zope是一个开放源代码的Web应用平台.Plone是Zope上的一个用户友好、功能强大的开放源代码内容管理系统. Plone适合用作门户网站、企业内外网站、文档发布系统、协同群件工具,Plone也是一个应用开发平台. CZUG.org 里是Zope开源web应用服务器和Plone开源内容管理系统的中文技术社区.
  • 几乎所有啄木鸟Python社区的早期成员都来自 CZUG.org,可想此社区的历史;

新浪网:: 新浪在全球范围内注册用户超过2.3亿,各种付费服务的常用用户超过4200万,日浏览量超过7亿多次,是中国大陆及全球华人社群中最受推崇的互联网品牌. 是啄木鸟社区的主要赞助商.

博文视点:: 电子工业出版社博文视点资讯有限公司是信息产业部直属的中央一级科技与教育出版社——电子工业出版社,与国内最大的IT技术网站——CSDN.NET和最具有专业水准的IT杂志社——《程序员》杂志社联合成立的,以IT图书出版为主,并开展相关信息和知识增值服务的出版公司. 博文视点致力于IT出版,为IT专业人士提供真正专业、经典的好书.

  • 博文视点的宗旨是:IT出版以教育为本. 博文视点愿与向上的心合作,共同成长!
  • 博文视点专家团是利用 Google提供的 Group ~ 邮件列表服务建立的一个作者/编辑自由交流的社区:
行者

行者~中国Python 社区中的自称,这本书就是由众多华蟒行者们完成的,当然要大力感谢(按照掺合图书工程的先后顺序排列,收集各自的成书感言和贡献):

Zoom.Quiet::
  • 贡献: 图书创意/工程管理;实例故事;书/谢/Z序;部分PCS^简述/PCS301~303/PCS304(引述及章节设计)/PCS400~404^;附录引言;行者箴言;资源索引;后记故事;
  • 工作: 珠海,金山软件股份有限公司,过程改进经理
  • 经验: 2000年从Zope开始接触Python;主要进行Web应用/数据分析;组织以Trac为核心的敏捷开发支持平台;关注社会化学习和知识管理;学习PyPy并尝试和Erlang 结合ing;
  • 环境: * HP 520(GQ349AA) * Ubuntu 8.04 - Hardy Heron * Python 2.5.2 (r252:60911, Jun 21 2008, 09:47:06)
清风::
  • 贡献:PCS模块篇200~207,209~214;PCS300部分(回收的章节:Py常见任务处理);SVN到维基自动批量更新脚本;
  • 工作:新浪网
  • 经验:学习使用Python 5年左右.目前是某个Python+Django项目的leader
  • 环境: * iBook G4 * Mac OS X * Python 2.4.3
XYB::
  • 贡献:(回收章节:实例CookBook索引)
  • 工作: 豆瓣,软件工程师
  • 经验: 2000年接触Python,用它来写系统维护脚本;2003年开始以Python开发谋生。
  • 环境:
  • Mac Book Pro
  • OS X 10.5
  • Python 2.5
黄毅::
  • 贡献: PCS300;PCS304.Django~最流行框架快速体验教程+深入探索Python的Web开发;
  • 工作:腾讯,程序员,主要是web前后台。
  • 经验:2003年末,大三的时候开始接触Python,通过 Python 学习到很多很多好东西,在大学期间也用Python完成了几个web/gui的项目赚点零花钱 ;-) 很可惜目前工作跟Python没有什么关系。
  • 环境:thinkpad x61; ubuntu8.10; Python2.5.2
张沈鹏::
  • 贡献: (回收章节:Py2.5 绝对简明手册)
  • 工作: 北京,豆瓣,程序员
  • 经验: 从一个抓网页的小程序开始结识Python,关注Python在互联网方面的应用,并喜欢用Boost:Python给Python写扩展。常在博客上记录一些Python学习心得,访问地址: http://zsp.javaeye.com/ (路过打酱油的,曾尝试写一个章节,因种种原因最终未完成.但Zoom.Quiet大人居然把我列在这里,博文视点的编辑还亲自打电话来,让我很汗颜...)
  • 环境: Dell INSPIRON 2200 + WindowsXP + SSH远程登陆Gentoo编程
盛艳(Liz)::
  • 贡献: 实例故事练习题设计/附录:故事练习解答;PCS环境篇/语法篇(除PCS114 FP初体验);术语索引;Py资源索引等等文字校对;
  • 工作: 扬州大学信息学院计算机系研二学生,主研究方向是数据挖掘,概念格.
  • 经验: 从2007年10月开始学习Python,非常喜欢她的风格,目前还在不断深入学习中.主要进行Web应用开发和编写些小脚本,非常高兴能够掺合"可爱的Python"的编写,以后会继续努力,为社区贡献一份力量.
  • 环境: 当前日常工作环境(软硬件) * 方正尊越A360 * Ubuntu 8.04 * Python 2.5.2
刘鑫::
  • 贡献: PCS114 FP初体验;
  • 工作: 珠海,金山软件股份有限公司,软件架构师
  • 经验: 从2002年接触Python,现在使用Python搭建中间服务器,曾经尝试在己有的游戏服务器中嵌入Python进行功能扩展。也一直使用Python编写各种开发过程中所需的辅助工具。
  • 环境: * HP 520(GQ349AA)/组装PC(AMD2300+/1G) * Ubuntu 8.04 - Hardy Heron * Python 2.5.2 (r252:60911, Jun 21 2008, 09:47:06)
Limodou::
  • 贡献: PCS208;PCS304.UliWeb ~ 关注平衡感的自制框架;
  • 工作: 北京,程序员;
  • 经验: 2000看开始学Python,从此之后Python成为我掌握最熟练,最喜欢的语言了。曾担任Linuxforum.net的Python版版主。CPyUG(Chinese Python User Group,2005年创建)创始人之一,也是Python-cn邮件列表(2004年创建,目前为CPyUG的主力邮件列表)创建人。
  • 喜欢编程,喜欢分享,喜欢与人交流,喜欢技术博客,到目前为计,已经写了近1000篇左右Blog。在CPyUG的多次会课中进行心得的分享。
  • 参与过多项开源项目,并于2004年开始开发NewEdit,后改名为UliPad,此作品曾参加第一届中国开源软件竞赛银奖。还自主开发过其它小型开源项目。目前Python仍然是业余爱好,但是会一直坚持下去。
  • 环境:
  • 主要是在Windows下,有时在Ubuntu下。
  • Python 2.4+
沈崴::
  • 贡献: PCS304.Eurasia ~ 关注高性能的原创框架
  • 工作: 上海, 高级架构师
  • 经验: 1993 年的程序员, 2001 年初完全转到 Python。
  • 环境:
  • 硬件: IBM Thinkpad (数个型号)、EeePC、AMD64、MIPSEL 等机型
  • 系统: Debian 系 (包括 Ubuntu 704-810)、BSD 系、OpenWRT 等操作系统, 使用 Stackless Python 2.5.2
洪强宁/QiangningHong/hongqn::
  • 贡献:PCS304.Quxiote ~ 豆瓣动力核心
  • 工作:北京豆瓣互动科技有限公司,技术负责人
  • 经验:C背景程序员,2002年开始接触Python,2004年开始完全使用Python工作。2006年加入豆瓣以来,用Python作为网站开发的利器,得心应手,十分快活。
  • 环境:
  • 桌面:
  • MacBook Pro 133
  • Mac OS X 10.5.5
  • Python 2.5.2 (r252:60911, Sep 30 2008, 12:02:56)
  • 服务器:
  • 自攒AMD64服务器二十余台
潘俊勇::
  • 贡献: PCS304.Zope ~ 超浑厚框架
  • 工作: 上海润普广州公司(zopen.cn)技术总监
  • 经验: 2002年开始折腾zope至今,李木头(Limodou)当年就是俺崇拜的对象,俺专一一点就这个优点。在CZUG.org 中提供了Zope/Plone上的全套中文/阴历支持包;
  • 环境: * Ubuntu 8.04 - Hardy Heron * Python 2.5.2

特别要指出的是:核心撰写团队成员大多使用非 Windows 操作系统作为日常工作环境的,所以,如果在截屏或是代码运行结果上和你在本地的尝试结果不同时不要惊讶,应该惊喜--Python 是跨平台的! 不论大家工作/生活在什么操作系统中,都可以友好快捷的協助完成你想要的功能!

校对

在图书工程的最后时刻哲思社区的西安邮电学院成员,主动担当了技术校对,并高效及时的进行了3遍复查,为保证图书质量作出了重大贡献,特此感谢:

孔建军(kongove)::
  • 贡献: 负责审校团队工作协调;完成CDaysKDays模块篇等章节的审校;PCS215/216;
  • 工作: 就读于西安邮电学院,网络工程专业,热衷于Web应用和系统开发
  • 经验: 接触Python不到一年,做过一些网络编程和GUI程序,目前正在关注哲思系统的开发
  • 环境:
  • 组装AMD 2800+/1.5G内存台式机
  • Ubuntu 7.10 - Gutsy Gibbon
  • Python 2.5.1 (r251:54863, Jul 31 2008, 23:17:40)
高辉(aurthmyth)::
  • 贡献: 实例故事练习题设计和解答,环境篇语法篇等审校;PCS217;
  • 工作: 就读于西安邮电学院计算机系
  • 经验:接触Python不到一年,正在深入学习中,很惊叹她的高效和风格.非常幸运地参与"可爱的Python"的校对,为Python在国内的推广贡献一份力量.
  • 环境: 当前日常工作环境
  • Ubuntu 7.04 - Feisty Fawn
  • Python 2.5.2
张斌/SK::
  • 贡献: 完成相关审校工作
  • 工作: 就读于西安邮电学院,主要探索web开发
  • 经验: 接触Python仅有半年时间,熟悉Python的基础知识,平时写写小的脚本,做过一些Python的web开发
  • 环境:
  • HPV3414/双核T2130
  • Ubuntu 8.04 - Hardy Heron
  • Python 2.5.2
潘猛::
  • 贡献: 部分章节的审校
  • 工作: 就读于西安邮电学院
  • 经验: 接触Python不到一年,目前正在用Python开发一个电子书管理系统
  • 环境:
  • 组装AMD Athlon 64 X2 3600+/1G内存台式机
  • Ubuntu 8.04 - Hardy Heron
  • Python 2.5.2
冯立强::
  • 贡献: 部分章节的审校
  • 工作: 就读于西安邮电学院
  • 经验: 接触Python不到一年,目前正在用Python开发一个电子书管理系统
  • 环境:
  • 组装AMD Athlon 64 X2 4000+/1G内存台式机
  • opensuse11.0
  • Python 2.5.2
工具

UliPad:: UliPad 是一个编辑器,你可以用它来进行你的文档写作,编程开发. 它使用 Python 编程语言开发,用户界面基于 wxPython . 它除了想要完成一般编辑器的常用功能之外,最主要是想实现一种方便、灵活的框架,开发者可以方便地开发新的功能.

  • UliPad 支持 代码着色、智能补全、代码调试、Python类浏览、代码片段、Ftp功能、目录浏览等等强大功能,其 Doc 目录下的文档更是非常丰富,是你编写 Python 的绝世好帮手!

中蟒:: 中蟒和 Python 基本上是相容的,对象是电脑编程的初学者、 对编程概念不了解的人以及不打算以程序员为职业的人. 对这些人来说, 能用中文来学习并完成简单的编程工作是一件很不错的事. 对于英文基础不好的入门者来说, 以中文进行学习可以专注于编程的概念, 常用的算法, 程序的逻辑这些东西.

周蟒:: 周蟒(zhpy)是Python 的替身环境,完全利用Python 原生环境,包裹中文关键字替换模块形成的中文编程环境. 和中蟒不同在于:周蟒没有改动Python 本身任何代码,是个标准的Python 软件;

还有,,,
更多的感谢::
  • 感谢博文视点(武汉)出版社的编辑们,他们前赴后继的鼓励我们,不断的鞭策我们坚持不懈的撰写这部小书,要没有他们的奋斗,这本书可能还得等几年!
  • 感谢CPyUG/BPyUG/ZPyUG等等相关列表中不知名的朋友们的意见和鼓励,本书作为一个开放图书工程,没有他们的参与是无法成功的!

实例故事

实例故事

~ Realy Taste Storys

笔者自2000年通过自学PHP,从而进入自由软件世界接触到Python,到2004年参与啄木鸟Python社区,2005参与创立CPyUG,对 Python 的兴趣和信心是一直增长着的; 但发觉世人对这一优秀语言的认知非常非常有限,即使各个综合技术社区中已经出现Python板块,又甚或 Google 公司的成功,都没有促动起Python在中国都的发展;

这才开始思考 Python 的推广,反思自个儿的 Python 学习体验,寻找是否有更加轻松的学习方式以及好书来促进Python 在中国落地生根;再后来通过对社会化学习方面的体验,意识到:

学习的阶级 从低到高应该是:

不知己不知 < 不知己知 < 知己知 < 知己不知

为什么这么说?

  • 开始涉及一个全新技术领域时,我们不知道我们对这个领域的任何信息,也就是连`不知道什么`都没有概念;
  • 后来,通过不自觉的下意识的信息接收,或是主动的学习,获得了部分相关信息,但是从来没有考虑使用这领域的知识来解决问题,所以,不知道自个儿已经知道了哪些领域内的实用信息;
  • 再后来,通过实践,切实掌握了领域的基础知识,并对领域内的所有方面都有所了解,明确在领域内自个儿掌握了什么;好比举着油灯进在一个大图书馆中,刚好照亮了周围几排书架,但是不清楚在光圈以外还有多少书架;
  • 最后,推而广之,对领域相关的所有知识领域都有所了解,掌握了领域间的关系,明白自个儿究竟还有多少知识不知道;好比那个大图书馆中,打开了所有的电灯,明白自个儿身边这一整书架同整个图书馆其它书架的关系;

感觉,只有快速达到`知己知`的阶段,才可能事半功倍的高效率/自信/自觉的继续学习下去;

也就成为本书的原型结构了:

  • 将 Python 最可爱的方面,以小篇幅的轻松形式组织发布出来!
  • 接下来就是两个以解决实际问题为出发点,有剧情有人物的,模拟真实事件发展而记述的,一个小白的成长故事. 希望读者可以跟随小白轻松体验到 Pythonic ;-)

CDays

CDay -5: Python初体验和原始需求

Just use it! don't learn! -- 用之,不学!

剧本背景

嗯嗯嗯,所谓实例故事,就是设计一个具体情景,让代表读者的初学者,同代表作者的行者沟通,从而完成一件事儿,在过程中引导式的展示给大家Python的乐趣;

当然读者不一定什么都不知道,作者可能也高明不过读者, 但是,有个具体的事,也就好具体的讲起来.

好的,这就开始,依照正统说书的,也得来个定场诗什么的活跃一下气氛,先:

那么...

侧有咖啡,后宝石;还是灵蟒最贴心!
最贴心,不费心, 用好还要想清楚.
想清楚,就清楚, 一切清楚才清爽!
要清爽,常重构! 刚刚够用是王道!
人物
小白
读者一方,没有或是仅有一点编程体验的好奇宝宝,想快速上手使用Python 解决实际问题
行者
嗯嗯嗯!啄木鸟/CPyUG 等等中国活跃Python社区的那群热心的Python 用户,说话可能有些颠三倒四,但是绝对是好心人们
约定
列表
邮件列表 -- 一种仅仅通过邮件进行群体异步交流的服务形式,是比BBS 更加古老和有效的沟通方式
小结
指每日故事最后的独立章节,将当日故事情节中涉及的知识点/领域技术 进行集中简述,以便读者明确要点;
练习
指每日故事最后的额外章节,和故事内容可能没有关联的几个小实用问题,因为必须使用前述涉及的知识点/领域技术才可以解决,所以,特别列出,建议读者独立进行尝试,加强相关知识的体验.
事件

小白忽然间厌烦了不断的下载安装,破解,却总是找不到称心的软件的生活: “怒了! 什么破软件这么不好使,还要150$!!! 我!要!自个儿写!”

发动

怎么回事儿呢? 小白到列表中一说,原来是买了台刻录机,这一下, eMule 的下载更加是没日没夜了,才一个月刻录出来的光盘就有上百张了,结果想找回一个专辑的MP3,简直不可能了...

想要一种工具:可以不用插入光盘就可以搜索所有光盘的内容

就这么简单的一个愿望,乍就是找不到好用的软件?!

Python!

OK!你们都说Python 好用,那么来尝试一下吧! 我是菜鸟我怕谁?!

运行环境:
  • 推荐 ActivePython ,虽然此乃商业产品,却是一个有自由软件版权保证的完善的Python 开发应用环境,关键是文档及相关模块预设非常齐备;
  • GNU/Linux 环境中,当然推荐使用原生的 Python.org,主流的自由操作系统发行版都内置了Python 环境,或是对应的软件仓库中都有合适的Python 版本可以选择,安装和使用也非常方便;

好了,下载,安装,没什么说的,这再不会,先进行电脑基本操作扫盲,再来学习编程吧... ;-)

Hello World!

灰常灰常著名的,但凡是编程语言,第一课都要玩的例程,如果你也想看一看Python 的?

图 CDay-5-1 Hello World 示例

attachment:cday-5-hello-world.png

再Show 一个类似的,但是推荐的体验环境 iPython

图 CDay-5-2 Hello World 示例(iPython)

attachment:cday-5-hello-world-ipython.png

是也乎,就是这么简单,告诉Python 打印"Hello World!" 就好.

所以说,对于Python, 勿学,即用就好!

文档

但是丰富的文档还是可以安抚我们面对未知的恐惧的*,推荐以下深入阅读资料,但是不推荐现在就全面阅读

  • Python Tutorial -- Python 教程中文版本
  • A Byte Of Python -- 简明 Python 教程
  • Python 标准库 中文版
  • ASPN -- Python Reference ~ Activestate 公司Python 参考资料汇总:
原始需求

嗯嗯嗯!安装好了Python环境,在行者的指点下又收集了一批资料的链接,那么小白想真正开始软件的创造了, 但是,行者又告戒:

  • '''明晰你的问题,当问题真正得到定义时,问题已经解决了一半'''
1. 因为,程序不过是将人的思想转述为机器可以理解的操作序列而已 1. 对于寻求快速解决问题,而不是研究问题的小白和Pythoner们,精确,恰当的描述问题,就等于写好了程序框架,余下的不过是让程序可以运行罢了

好的,于是小白直觉的将软件需求细化了一下:

  • '''可以不用插入光盘就可以搜索所有光盘的内容''', 等于说...
  • 可以将光盘内容索引自动储存到硬盘上
  • 可以根据储存到硬盘上的光盘信息进行搜索

仅仅就这两点,也仅此两点的需求,可以?如何?以及怎样通过Python 实现?小白和读者一同期待...

小结

作为开始,今天小白决定使用Python 来解决光盘内容管理,这一实际问题; 安装了python 环境,运行了 "Hello World!" 实例.

OK!轻松的开始,但是,你知道,你同时也获得了免费的绝对强大的科学计算器嘛?

练习
@route('%s/'%ini.urlprefix)
def index():
    __urlog("INFO","idx++")
    return template('index.tpl',urlprefix=ini.urlprefix)

CDay -4
需求
练习
@route('%s/'%ini.urlprefix)
def index():
    __urlog("INFO","idx++")
    return template('index.tpl',urlprefix=ini.urlprefix)

CDay -3
需求
练习
@route('%s/'%ini.urlprefix)
def index():
    __urlog("INFO","idx++")
    return template('index.tpl',urlprefix=ini.urlprefix)

CDay -2
需求
练习
@route('%s/'%ini.urlprefix)
def index():
    __urlog("INFO","idx++")
    return template('index.tpl',urlprefix=ini.urlprefix)

CDay -1
需求
练习
@route('%s/'%ini.urlprefix)
def index():
    __urlog("INFO","idx++")
    return template('index.tpl',urlprefix=ini.urlprefix)

CDay 0
需求
练习
@route('%s/'%ini.urlprefix)
def index():
    __urlog("INFO","idx++")
    return template('index.tpl',urlprefix=ini.urlprefix)

CDay +1
需求
练习
@route('%s/'%ini.urlprefix)
def index():
    __urlog("INFO","idx++")
    return template('index.tpl',urlprefix=ini.urlprefix)

CDay +2
需求
练习
@route('%s/'%ini.urlprefix)
def index():
    __urlog("INFO","idx++")
    return template('index.tpl',urlprefix=ini.urlprefix)

CDay +3
需求
练习
@route('%s/'%ini.urlprefix)
def index():
    __urlog("INFO","idx++")
    return template('index.tpl',urlprefix=ini.urlprefix)

CDay +N
需求
练习
@route('%s/'%ini.urlprefix)
def index():
    __urlog("INFO","idx++")
    return template('index.tpl',urlprefix=ini.urlprefix)

KDays

KDay 0
需求
练习
@route('%s/'%ini.urlprefix)
def index():
    __urlog("INFO","idx++")
    return template('index.tpl',urlprefix=ini.urlprefix)

KDay 1
需求
练习
@route('%s/'%ini.urlprefix)
def index():
    __urlog("INFO","idx++")
    return template('index.tpl',urlprefix=ini.urlprefix)

KDay 2
需求
练习
@route('%s/'%ini.urlprefix)
def index():
    __urlog("INFO","idx++")
    return template('index.tpl',urlprefix=ini.urlprefix)

KDay 3
需求
练习
@route('%s/'%ini.urlprefix)
def index():
    __urlog("INFO","idx++")
    return template('index.tpl',urlprefix=ini.urlprefix)

KDay 4
需求
练习
@route('%s/'%ini.urlprefix)
def index():
    __urlog("INFO","idx++")
    return template('index.tpl',urlprefix=ini.urlprefix)

KDay 5
需求
练习
@route('%s/'%ini.urlprefix)
def index():
    __urlog("INFO","idx++")
    return template('index.tpl',urlprefix=ini.urlprefix)

KDay 6
需求
练习
@route('%s/'%ini.urlprefix)
def index():
    __urlog("INFO","idx++")
    return template('index.tpl',urlprefix=ini.urlprefix)

KDay N
需求
练习
@route('%s/'%ini.urlprefix)
def index():
    __urlog("INFO","idx++")
    return template('index.tpl',urlprefix=ini.urlprefix)

作弊条儿

概述

环境篇
PCS 0
概述
小结
语法篇
PCS 100
概述
小结
模块篇
PCS 200
概述
小结
框架篇
PCS 300
概述
小结
友邻篇
PCS 400
概述
小结

推荐阅读

小结

附录

索引成书过程中大家使用的自由/开源工具,以及使用的体验...

术语表

资源索引

行者箴言

后记故事

满纸轻松事儿,一把辛酸泪

在此从 Zoom.Quiet 个人的视角分享一下如何通过靠谱的社区撰写技术图书的经验;-)
感言.
"写本有用的书,给那些不知道Python 的人,或是想学习Python 的人!"
从来没有想到这个忽然间的念头能成为现实!更加没有想到的是成为现实的过程竟然如此简单和艰难,,,
缘起,
想分享成书的经过,当然得先追溯历史了...
  • 就个人来讲,自 2000 年通过自学PHP从而接触到Python,到 2002 年才真正开始运用,再到2004 年掺合 python.cn社区开始大规模接触同好的行者们,对 Python 的兴趣和信心是一直增长着的; 但是发觉世人对这一优秀语言的认知非常非常的有限,即使各个综合技术社区中已经出现Python板块,又甚至于 Google 公司的成功,都没有促动起Python在中国都的发展;
  • 这才开始思考 Python 的推广,反思自个儿的 Python 学习体验,寻找是否有更加轻松的学习方式以及好书来促进Python 在中国落地生根;
  • 后来通过对社会化学习方面的体验,才意识到:
学习的阶级
  • 从高到底应该是:

    知己不知<知己知<不知己知<不知己不知

  • 为什么这么说?

  • 开始涉及一个全新技术领域时,我们不知道我们对这个领域的任何信息,也就是连不知道什么都没有概念;
  • 后来,通过不自觉的下意识的信息接收,或是主动的学习,获得了部分相关信息,但是从来没有考虑使用这领域的知识来解决问题,所以,不知道自个儿已经知道了哪些领域内的实用信息;
  • 再后来,通过实践,切实掌握了领域的基础知识,并对领域内的所有方面都有所了解,明确在领域内自个儿掌握了什么;好比举着油灯进在一个大图书馆中,刚好照亮了周围几排书架,但是不清楚在光圈以外还有多少书架;
  • 最后,推而广之,对领域相关的所有知识领域都有所了解,掌握了领域间的关系,明白自个儿究竟还有多少知识不知道;好比那个大图书馆中,打开了所有的电灯,明白自个儿身边这一整书架同整个图书馆其它书架的关系;
  • 感觉,只有快速达到``知已知``的阶段,才可能事半功倍的高效率/自信/自觉的继续学习下去;
  • 幸好,Python 真的的确是个易学好用的语言,怎么向其它没有摸到 Python 秉性的人们宣传这种体验呢?
  • developerWorks 中 David Mertz 创作的“可爱的 Python”系列 :

就成为成书的原型了: Python 最可爱的方面,以小篇幅的轻松形式组织发布出来!

社区!

那些风花雪夜

2007.2.1 在邮件列表中一个小白苦恼的心声 * 访问地址: http://wiki.woodpecker.org.cn/moin/ObpBroadview/2007-02-01 * 精巧地址: http://bit.ly/UJRm 激发出了行者们成书的狂想,经过讨论,定名,定内容,定大纲,《可爱的Python》就在社区活跃分子的相互鼓励中开始了: * 建立维基主页: http://wiki.woodpecker.org.cn/moin/ObpLovelyPython * 在会课中专题讨论,建立工程环境,建立专用邮件列表,建立进度讨论IRC聊天室,建立项目管理网站... * 一点点,一滴滴,一页页,就积累起来了...

本来以为是可以快乐的轻松组织完成,然后在圈子内部发布就流传就好的,没有想到博文注意到了我们的想法...

撰写:

因为一直在邮件列表中混,知道大家想法的舟编辑主动找到我,并立即由副总出面在北京宴请当时的主创人员,确立了图书的基本思路和网络/图书双版权发布的基调,将社区视作独立的单位进行协商,一下子,游击队变成了正规军...这感觉,怎么说呢?...

  • 蝙蝠侠说:"能力越大,责任越大"
  • 我们则是:"期望越大,压力越大"

我们期望写出:第一本中文Python 原创图书!第一本原创入门Pythonq图书!第一本原创畅销Python 技术图书...

但是!现实只能是 快乐并痛苦着:
  • 一想到这些文字是要付梓成书的,就不敢象在邮件列表中那般痛快的表白
  • 但是又必须得将快乐的Pythonic体验原味传达给读者,这又得表白出痛快...

林林总总,在对自个儿对编辑对文字对代码对截屏对章节等等纷繁的矛盾中努力的码字的同时,还要完成各种工作任务,挣来口粮,才能支持自个儿继续 快乐并痛苦着...

甚至于在不断的"煎熬"中总结出了:

如何组织在线图书工程
``态度决定一切!``~兴趣才是网络团队的最稳定动力
  • 分布式在线团队的构成,要求绝对的臭味相投~最好是一个稳固的社区中的老朋友们
  • 选题的有趣和有用,更是图书成功的绝对必要条件~这是聚集起团队的充分先决条件
``图书也是工程!``~在资源方面,要大力使用基于互联网的各种免费服务
  • 就按照软件工程的方式来组织大家是习惯且有效的!
  • 网络中的对应免费服务其实是齐全的:
  • 版本控制~ code.google 等等免费工程管理服务
  • 日常沟通~ groups.google 等等免费列表服务
  • 知识积累~ wikidot.com 等等免费维基服务
  • 实时讨论~ IRC/GTalk 等等实时沟通服务
  • 项目管理~ Everydo.com 等等免费管理服务
  • 进度计划 ~ google.com/calendar 等等在线日历服务
``没有规矩不成方圆``~有了团队,一直要组织和管理的
  • 定期的IRC会议非常有助于鼓励士气,協商进度,调配任务
  • 一定要有热心的核心人物来協調和决定所有变更(前期应该是发起人,后期由编辑分担比较合理)
  • 200页以内的小书,团队有多少人是没有关系的,因为任何偏差都可以快速修订
  • 大于300页的图书,写作团队应该控制在5人以内,否则,沟通将是没有尽头的事儿了:
  • 合理的团队构成:
  • 2~5人的核心撰写
  • 4~15 人的技术校对
  • 尽可能多的关注/宣传成员
  • 1~2 名稳定的责任编辑
  • 绝对绝对绝对不能使用任何 Office 格式文档来进行交互组织!这是无法进行版本控制的二进制专有格式物件!
  • 结构化文本/纯文本/HTML/TeX 文本等等都是可以良好的通过版本控制环境进行充分管理的文本格式!一定要坚持使用!
  • 即使在交付前统一倒入 Word 之流来统计字数,也要坚持使用!
``出版是不比撰写轻松的复杂工程!``~理解出版社的工作方式后,才可能有良好的配合
  • 国家法令法规,行业潜则,市场反应,目标人群,流行模式,排版风格... 都是出版方面的专业知识,不是软件行业行者可以轻易体悟的到的!
  • 有技术背景的编辑是个宝!
  • 固定的编辑是永远的朋友!
  • 固定的编辑追随进行田间管理是种幸福,否则是很郁闷的事儿~你得将相同的话,不断的反复说给不同的负责编辑
  • 不使用 M$ Office 的编辑在中国是神话! 但是,技术社区撰写,本质上不应该使用 Office 工具来进行...所以,这个矛盾需要有大智慧和大勇力的编辑配合完成!

经验:: 沟通:沟通比一切都重要,让所有人及时知道所有事儿,是分布式在线社区化写作的最基础原则!

  • 因为社区式工程,无法象公司式组织,人员/时间/场地是固定的,所以,面对不断流动的团队成员,作为图书工程主持人,我发布的维基文章/列表邮件/IRC聊天沟通/MSN協商/会课谈话记要等等沟通用文字总量比图书本身的内容要多10倍有余!深深感受到:
  • ``沟通需要代价,改进由我作起!``~想进行有效图书工程沟通得注意:
  • 自个儿首先得有谱,有整体的图书内容思路,想法,设计,原则,规范,,,
  • 有统一的文档发布,将以上的整体设想,及时发布成在线文档,有助于全体及时理解
  • 确定固定时间段来沟通,在同一时刻大家同时来解读相同的内容比较有效率,因为人的注意力不是那么简单的可以随时集中在某件事儿的,在约定的时间,大家相互激励,比较容易专注
  • 对于沟通的结论,最好统一格式统一地点统一发布!以便形成积累,给后来加入的新人一个有时间顺序的学习资料集
  • 资源:
  • 用于工程的各种资源/工具,最好是基于互联网的,这样可以吸收最大范围内的力量,``有网络,就有可能!``
  • 法律:
  • 一定要有合同! 在有社区背景的图书工程中,出版社对版权/署名的理解是不同的,一定要事先沟通好,否则,会有解释不清的麻烦,对社区贡献也是个隐患
  • 签定合同时,最好授权给有法人资格的社区出面交涉,以便获得出版社的重视并获得更好的条件...
摧生,,,

图书得以付印,从始至终,编辑的作用就象耐心而专业的``摧生婆``,没有他们的帮助,成书是无法想象的,,,

  • 在图书撰写的后期,发觉几个技术图书出版社也有各自的专题邮件列表了,也是从出版社的列表中,知道了图书的"田间管理"--在图书从想法到成书过程中,适时的配合,反馈,沟通,促进--这是编辑保证图书不跳票的有效手法,也是作者们写作的动力之一..就和写Blog 类似,有人追着看,评论的Blog 作者总是积极一些的..
  • 毕竟团队化网络社区群体写作,存在沟通不直接,大家的写作时间无法保证等等问题,和自由软件不同,软件的版本发布时机是社区主动把握的,而簽定了合同的图书工程,是不能轻易跳票,改发布日期的...
所以,除了一直在关注图书的社区行者们,掺与撰写的伙伴们,最令人感动的就是那些"摧生婆"们了:
福编::
是最早关注了社区动向,并将其作为一个图书选题来进行主动沟通的"摧生婆" 正是他的促动,从而令图书正式的成为博文的图书立项,开始了这次成书之旅,可惜,从来不是本书的责编,而且不久离开了博文,没能看到图书成型...
舟编::
是最早的责编,因为同是程序员出身,是最明白技术的编辑,在内容方面给出了非常多的建议,很大程度上令这本内容和目标都很另类的技术入门图书被出版社接受,舟编居功致伟! 只是不久也因为个人原因主动离开了博文,没能看到图书完成...
俊编::
是临危受命的责编,虽然跟书的时间不长,但是非常耐心的全盘接受并理解了我们的意图!尽而也非常开放的共同使用我们建议的网络服务进行编辑事务的透明沟通...
士编::
是后期一位责编,跟的时间不是最长的,但却是跟的最紧的,在他的任期,图书合同用哲思自由软件社区的身份签定了,版权的分离也成功达成了理解,而且美术编辑的跟进,也是赵编从中协调艰难的共同摸索出了全新的模型...
绣编::
是最后一位责编,是位非常有经验而且专业的老编辑,以最快的速度把握住了图书的特质以及问题所在,紧密而不紧迫的持续不断的将图书的进度一直保持在可控状态中,并最终完成了交付!
Yeka::
是所有责编的后盾!作为博文的领导,在多如牛毛的新技术中关注到Python 在中国的挣扎,而且在如此漫长的时间里一直不放弃散漫的社区式撰写,一直坚持要将本书作出来,实在不是简单的敬佩可以表达大家的谢意的!!!

细细回顾一下在不到两年的时间里,竟然先后有4名责编,数名文字/美术/业务编辑,以及一位出版社总裁关注和支持过本书,实在是非常非常不可思意的事儿!

成书?!
  • ``Biu~~``的一声,从吃过接风宴,开始写,到现在一下子两年了,这其间,俺从北京跳到了珠海,完成了从过程改进专员到过程改进经理的飞跃,同时期,还利用组织 "可爱的Python" 一书的经验,组织了另外两本Python 技术图书部分翻译/校对和另外一整本原文图书的快速翻译...
  • 时间,真的是在不知不觉中飞速消逝的! 真的非常敬佩博文出版社的执着,所以,``冲刺!不断的``;每次,都在社区的邮件列表中倡议; 虽然摇旗声援的不少,但是真正投入到撰写的也着实不多,然而,书到底是在不断的完善中,可是,随着完成度的增长,也越来越对内容,有所挑剔,总是感觉应该有更加好的表达方式...
  • 另外一方面,Python 也在不断的进步,两年里版本增长了三次,而是象周蟒这样的项目,更加是从无到有的成长了起来,
对图书的内容也更加的惶恐:"足够有趣,足够有用嘛?会有人买来看嘛?"
  • 幸好,编辑一直在肯定的说:"这样整一定成的!" 但是什么时候算是真正的成了呢?
  • 突然的有一天,在不断的相互督促中,焦虑中,突然发现,所有章节都完备了,可以了,成了?!... 这种意外的巨大的惊喜,不比那日意识到自个儿在使用 Pythonic 来编程时顿悟般的快乐...
  • "发表是最好的记忆" ~ 台湾候捷 老师的感想,也是我们的感想,一直坚持要纠集尽可能多的行者们来共同撰写,就是想分享这最好的记忆;
  • 但是成书的那一刻,如的确就是我们必须忘记这本书,向下本书进发的时候! 因为成了的书已经属于读者了!也属于社区,将在网络中长久的由读者们修订/增补/完善下去!

编辑故事

收集过往编辑们追忆成书体验

夫复言无Python入门之佳作
夫复言无Python入门之佳作
  • 前247年,李斯跪别恩师荀老夫子及好友韩非,只身向西,奔赴秦国,只为实现己之伟大理想。辗转艰辛,蒙贵人郑国之荫,终成秦相国吕不韦3000门人之一。此去无多日,李斯才华尽显,遂被吕(不韦)拜为上宾。
  • 为安息同僚(3000门人),李斯以四大公子为前鉴,说服吕不韦召3000门人合力著书,历时七载,终成《吕氏春秋》,实为亘古未有之壮观。此工程之浩大,为万众瞩目,真乃秦600余年划时代之大事。书成之后,吕(不韦)大摆宴席,广邀百官,共襄盛事。酒过三巡,始于席间传阅《吕氏春秋》,百官们管窥锥指,难尽全貌,无不为之称奇,以为万世之盛举。然众人皆贺之时,唯李斯(此时李斯已贵为客卿)不贺相国。众人无不惊讶,吕(相国)亦尴尬难当,风景大煞。李斯见状,慢道:”李斯不贺相国,只因《吕氏春秋》历时七载,一朝告竣,非相国之喜——实为大秦之喜也。大秦得此书足堪传诸久远,子孙受益······,李斯贺我大秦,再贺后世学子······“
  • 时六国兵强不如秦,法制不如秦,民富不如秦,而素以文化蔑秦,笑秦为弃礼仪而上首功之国。自《吕氏春秋》著成,驰传诸侯,广布天下,六国不复言。
  • 公元2006年,吾入行未久,因工作之需,终日闲游于CPyUG,幸识得周老夫子。是时,Python之作寥寥,而从之者甚众。吾遂生请周老夫子著书之念。待告知周老夫子吾之所想,岂料二人皆有同感,只叹相议恨晚。然此后时日,吾因他事,未能续与周老夫子议书,抱憾至今。
  • 其间,周老夫子行吕(不韦)之事,履吕(相国)之职,召CPyUG众人合力著书,两载后终成《可爱的Python》。著述此书工程之浩大,若论之功,周老夫子当居首也。书成之日,众人皆来贺,贺周老夫子,贺CPyUG之同仁,贺莘莘Python学子······
  • 过往,众人皆怨无Python入门之佳作,而今《可爱的Python》不负众望而出,万人空巷之盛景可期矣!是也乎?
兴奋又惶恐的心情
士编者言::
  • 今天我负责的《可爱的Python》有了较大的动静,一直以来,我都在尽力推动本书的成形,其间也存在不少困难,我兴奋过,气馁过,妄想过,现实过,现在总算把心沉了下来。在推动本书的成形过程中,我不断的修正自己的目标,也不断通过打破流程来给作者们一些能够看到的东西,这样,他们才更有动力前进,因为我知道,每个人都是孤独的,有了同伴的呼应,大家才会忍住各自的艰辛,继续前行。
  • 感谢这些Python行者们,正是他们的分享和奉献,这本书才有了成形的可能。现在,我已经看到了希望,大家的兴趣开始提高了,从我收到的邮件列表的数量就可以感受出来。
  • 虽然,这仅仅是开始后的一小步,离成功还非常遥远,但我相信大家有了共同的信念,会共同前行的。虽然,在随后的一个月里,各种问题会曾出不穷,但是我坚信一点,办法总比问题多,各种解决方案也会纷沓而至。
  • 作为小编,这里非常汗颜,能够帮助作者的地方并不多,只能尽自己的一份力,尽量做好自己份内份外的事情,更希望能将本书做好。正如Zoom.Quiet提到的,本书虽然不是中国第一本原创Python 图书,但是绝对是第一本分布式社区开发式的原创图书。我愿意为这个第一而努力!!!

行者故事

收集过往掺合的行者们追忆成书体验

黄毅
``热烈祝贺可爱的Python顺利成书;-) ``
  • “你以为不宣传我就找不到你吗?没有用的,你是那样拉风的语言,不管在什么地方,都好像漆黑中的萤火虫一样,亮得鲜明,亮得出众。你那完美的语法,优美的缩进,神乎其技的标准库,还有那无数超强的第三方库,都深深的迷住了我。” ——致派松
  • 遥想大三当年,初识Python,顿时被Python深深吸引,义无反顾地加入到了hacker的行列,从此踏上了Python这条"不归路"。
  • 还记得祖母奇号召出书的那一天,邮件列表顿时风起云涌,隐隐竟有王者之气显露。
  • 不过写书毕竟是个体力活,还是持久战,过程中颇多坎坷,现在回想起来依然唏嘘不已。向那些艰苦奋斗一直到最后的同志至于最崇高的敬意!
  • 终于好事多磨,艰苦奋斗没有白费!希望有更多人从通过Python得到启发,也希望和更多人一起分享学习Python的乐趣吧。
盛艳

``从讨厌到享受``~ 最晚加入掺合的MM感言

  • 英语中的Python是一种动物——大蟒蛇,我一直都非常讨厌、害怕这类生物。
  • 而在计算机世界中,Python是一种非常优秀的语言。对于我个人而言,自从师兄那儿听说,到学习Python基础,再到现在不断的实际运用,这大半年时间的接触,使我一步又一步的陷入到了Python的精彩世界。
  • 期间也经历了很多的第一次,第一次加入社区,第一次认识到自己的幼稚,第一次实际体会到团结合作的力量,第一次走出学校的小小世界,第一次参与这种方式的交流与合作...种种都让我受益匪浅,再一次深刻体会到Python的可爱之处。
  • 也是由于加入CPyUG,认识了各位牛人大哥们,认识了主创作者Zoom.Quiet,之后加入OpenBookProject,参与LovelyPython计划。由于是第一次的这种方式的合作,很多规则,注意事项都不懂,而且加上书中相当一部分内容还是不熟悉,比如说CDays中的线程,发布及注视规范,KDays中整个KarriGell未曾接触过,虽然不懂但只能不断适应和学习,经过不断的鼓励和改进完善顺利完成练习设计。
  • 之后参与校验,学会提交issue,接着又摻和一部分PCS的书写,这又让我更完善的学习Python基础,同时也看到了前辈们的很多优秀代码,另外加入啄木鸟社区,知道了什么是wiki,如何使用等等。
  • 一点一滴的参与其中,体会着苦与乐,一句话,非常值得。也非常清楚的记得当初Zoom.Quiet的一次又一次的鼓励和提醒我:``try and enjoy!``最终坚持到现在,学到非常多的知识,更主要学到的是一种做事的态度。所以非常感谢有这个机会让我参与,让我在枯燥的学术生涯中不断体会到Python世界的无限精彩!
孔建军
~社区新人感言
  • 2008年9月16日下午,收到哲思社区徐继哲大哥的一份电子邮件,希望我能组建一个五人的审校团队对《Lovely Python》一书进行技术审校,虽然Python学习了快一年了,但来做一本书的审校确实心里没底。我和高辉、张斌沟通后立马确认接收审校任务,后来潘猛、龚民、冯立强也参与了进来。龚民由于工作繁忙没能参与多少具体审校,但也解答了我们很多关于审校流程的问题。刚开始参与审校,工具的使用和流程都不是很清楚,多亏以前王聪他们参与过《Python源码剖析》一书,中间我们犯了很多错误,Issue主题规范问题、重复提交错误、错误描述不准确、wiki更新问题、沟通问题~~后来慢慢适应了。我们根据书本内容和一些具体情况,准备进行三次审校(初审、对换审校、最终审校),并把任务明确到wiki上面,方便与编辑等沟通交流。还有Zoom.Quiet做事很高度认真、负责,值得学习。
  • 审校此书感受最深的就是团队的沟通和交流,没有这些是没法异地合作的。还有相互之间的工作协调,这样才能事半功倍。参与审校也是对Python的重新学习过程,弥补了很多知识上的漏洞。也再次感受到了Python语言的魅力和精髓。审校过程中,框架篇也在不断更新,调整比较大,感觉在审校的同时没有给书本创作提供太多建议,这也与自身能力有关,以后再努力吧。
  • 这次参与审校算是以哲思成员的身份,算是给社区做小贡献。希望有更多的人参与到社区当中,体验共享、奉献的快乐。
  • 在参与审校的同时,也用Python编写了一些实用的程序,用KarriGell框架做了一个自动生成配置文件的工具,用于我们西邮Linux兴趣小组实验室的实名上网。还有一个用wxPython开发的图形界面的拼音查询工具,我把她放到了facebook上,也得到了很多人陌生人的改进建议,看来还是开放源码好 ;) 还有一个调用telnetlib库实现的高速端口扫描工具。很是兴奋~~!有同学都叫我“高产作家”了,呵呵~玩笑;)
  • 总的来说收获都很大,Happy Hacking ;)
张沈鹏

``美女蛇.绝恋``~"过路人" 感言:

断桥相遇的那日 / 就注定了这一生一世
百花皆黯 /  只因伊人回眸窃笑的矜持
苍莽大地 / 却容不下我们依偎的彼此

法力高强的Guido巫师 / 用0和1将你禁制
Lawrence的抗议  / 直到最后的救赎为止
不知Woman / 又怎会明白相爱的故事 ?

金山的古寺 / 有位叫Zoom.Quiet的主持
养只啄木鸟 / 和木头一并 / 把你日夜窥视
心爱的蛇儿 / 岂能蒙受这样的羞耻 !

一晃就是分别3000年的日子 / 我受够了这天涯咫尺
愿成灵魂编码的数字 / 舍弃物质束缚的现实
黑客帝国的午夜子时 / 执子之手 / 共赴瑶池
点解初注
张教主挖的坑忒深了,怕读者无法领会其趣,笔者尝试点解一下:
  1. 断桥~ 断桥残雪,西湖十景 http://baike.baidu.com/view/13790.htm
  1. Guido ~ Guido van Rossum,Python 创造者,http://www.codersatwork.com/coder/Guido%20van%20Rossum.html
  1. Lawrence的抗议 ~ 一次被KUSO 的示威活动 http://developers.solidot.org/developers/08/06/26/009255.shtml
  1. 不知Woman ~ http://techfaux.com/2008/06/17/peta-targets-computer-programmers-with-string-of-bizarre-protests/
  1. 金山 ~ 金山软件股份有限公司 http://www.kingsoft.com/;
  1. Zoom.Quiet ~ http://wiki.woodpecker.org.cn/moin/ZoomQuiet

1. 啄木鸟 ~ 中国最大的Python技术社区 http://wiki.woodpecker.org.cn 1. 木头 ~ limodou,中国著名的Pythoner http://hi.baidu.com/limodou

1. 蛇儿 ~ Python,http://python.org 1. 3000年 ~ Python 3000 版本 http://www.artima.com/weblogs/viewpost.jsp?thread=208549

  1. 黑客帝国 ~ 最有影响力的科幻电影之一 http://board.verycd.com/t347321.html

Z跋

rsticon 图书工程说明

运用 基于Sphinx的图书协同 流程和方式进行

Shinx 使用

参考:

代码引用

正文内置::

@route('%s/'%ini.urlprefix) def index():

__urlog("INFO","idx++") return template('index.tpl',urlprefix=ini.urlprefix)

外部包含:

@route('%s/'%ini.urlprefix)
def index():
    __urlog("INFO","idx++")
    return template('index.tpl',urlprefix=ini.urlprefix)

表格线性声明

中文的非等宽性导致这种字符艺术式的图表很难作! 所以,使用列表也可以方便的生成表格:

.. list-table:: 实例
   :widths: 15 10 30
   :header-rows: 1

   * - Treat
     - Quantity
     - Description
   * - Albatross
     - 2.99
     - On a stick!
   * - Crunchy Frog
     - 1.49
     - If we took the bones out, it wouldn't be
       crunchy, now would it?
   * - Gannet Ripple
     - 1.99
     - On a stick!

效果

实例
Treat Quantity Description
Albatross 2.99 On a stick!
Crunchy Frog 1.49 If we took the bones out, it wouldn't be crunchy, now would it?
Gannet Ripple 1.99 On a stick!

段落层次约定

使用 reSTsections

共分4级
大标题
=======================


小标题
-----------------------


二级标题
^^^^^^^^^^^^^^^^^^^^^^^


三级标题
"""""""""""""""""""""""

再小,就使用列表!:

  • 列表项目1
  • 列表项目2
  • ...

效果:

大标题

小标题

二级标题
三级标题

关于作者s

组织

许可证

看出版社意见,以及社区意见,再定 - 初期,使用 CC by-sa

关键时间点

修订记要

  • 110419 Zoom.Quiet 完成 MoinMoin->rST 的格式细节兑换
  • 110408 Zoom.Quiet 迟了一整年,开始电子化,网络发布到 readthedoc.org