译者前言

如果一位新手想要学习编程,那么 Python 一定能排在推荐清单的最前列。而如果要想学习 Python,Swaroop C H 所撰写的《A Byte of Python》一定也能排在推荐教材的靠前位置。作为一本旨在简明、易懂地传授 Python 知识的教材,这本采用知识共享协议免费分发的图书一经刊行就流行于世界各地,不仅被翻译成各种语言,还被许多大学或教育机构采用用作正式的教学教材。它在中国还有一个流传已久的名字——《简明 Python 教程》。

2005 年,沈洁元将《Byte of Python》的 1.20 版本引进中国,并完成了全本翻译,将其译名定为《简明 Python 教程》。十余年来,这一译本流行于各大网站,想必自是为无数新晋的 Python 学习者以及业已有编程经验的程序员们提供了莫大帮助。

如今这份教程的中文译本的年龄已逾 11 年,原书《Byte of Python》已有诸多改动,而 Python 亦已历经多个重大更新。最简单的情况便是,在 Python 2 更新至 Python 3 后,译本中开头的第一个程序 print 'hello world' 这一写法已经不再适用于 Python 3。可以料想,这个问题已对不少学习者成了他们在学习 Python 时面对的第一个困扰。

这也是促使我这个兴趣使然的编程新手开始试图重新翻译这本教程的原因。计算机技术、程序与应用开发技术的发展可能比其他任何一项技术更能贴合日新月异这样的说法,而有关 Python 由 2 至 3 的改动是否得当、应当使用哪一个版本这些议题到今天依然争执不休。即便如此,一本简明教程或许仍有其紧跟时代的必要,在所有资料都准备就绪后,才可对后来的新入门者提供更全面的帮助,产生更为有利的影响。

于是,自一个兴起而至的想法启程,今天我心怀忐忑地带来这本从头重新翻译的《简明 Python 教程》的新译本。

本译本根据《Byte of Python》原书在 GitHub 上提供的原文件进行翻译。根据原书中提供的修订历史信息,译本遵循同样的版本号,定义为 4.0c 版。本次翻译除了正文内容外,还翻译了其他介绍章节、附录章节以及其中的读者来稿与感言。书中所附的 .py 文件及直接写入正文中的的源代码酌情翻译了注释部分。但为了保证程序源代码中的整洁与避免不必要的修改,程序案例源码中的英文语句没有翻译而保持原样。

由于沈洁元所发布的 1.20 版译本是基于 CC BY-NC-ND 1.0(署名-非商业使用-禁止演绎,在译本发布时写作“署名-非派生作品-非商业用途”)协议进行授权与分发,因此这一重译本不能在沈的译本上进行改动或采纳其已有的更有力的表述,而只能将其列为参考。但在此依旧要向沈洁元的翻译工作表示感谢,这份开辟性的译本对本译本的翻译提供了诸多参考,在这十数年间为无数学习者起到了至关重要的帮助。新译本不敢抱持多少野心,只希望能够继承先前译本所能起到的作用——哪怕只有些许。

另外,作为同一本书不同修订版的前后译本,为使阅读过沈洁元译本的读者便于通过本书了解新增的内容,同时也为避免对同一概念的不同表达可能造成的困扰,对于本译本与沈洁元译本译法相左的一些术语或概念,会在注释中列出了沈洁元译本采用的译法,供读者参考。

有关现在这本新译本,翻译并非一蹴而就,期间磕磕绊绊也是必然。事实上现在这位新译者在刚开始翻译时仍是一名编程门外汉,仅抱着兴趣使然的心与一边翻译一边学习的浅薄想法而仓促启程。只不过在抵达终点时仍担心不已,不知是否已实现出发时的雄心壮志。因此,读者诸君在阅读本译本时如果遇到了任何表达上的疑惑,或是发现了任何翻译上的错误,还请务必与译者联系,指出个中疑惑或疏漏、错误,以便更好地改进这一译本,为后来的其他学习者提供更为有用的帮助。

在翻译过程中,译者得到了诸如 Nakagawa Kanon,Zxteloiv,Yukko 等其他不能一一列清姓名的友人帮助,是他们向我解释概念,提出更精准的译法。在面对我这一个新手时常流露出的无知与莽撞时他们所展现出的包容和耐心予我莫大鼓励,在此要对他们表示感谢。

有关对于本书内容方面的感想或谢意,你可以将其直接寄给原作者 blog@swaroopch.com">SwaroopC H(blog@swaroopch.com)。有关译本在翻译方面存在的任何疑惑与问题,你可以通过电子邮件i@molun.net)与译者取得联系。而受限于译者在编程方面的浅薄学识,对于本书在学习过程中产生的编程方面的疑惑,很可能不能为读者诸君提供有用的解答,这点还望见谅。

在此,预祝你的 Python 学习之路能一路畅通无阻,携坚持与毅力出发,最后满载而归。

漠伦

2017年1月2日

修订追记

本书在译成后得到了诸多读者的指正,以下列出对本译本的修改提出过建议的读者,并感谢他们的意见与建议。所有排名不分先后。

2017 年 1 月 3 日至 1 月 8 日,陆续进行了错字漏字的订正。依 anglum 与 slimray 的建议对《面向对象编程》一章的部分翻译作了修改,并修正了错误。经 行走的鱼2001 指正改正了《函数》一章的错误。经 lefinite 指正改正了《数据结构》一章的错误。经 Zhanyu Wang 指正改正了《模块》一章的错误。经 nonozone 与 张小西 指正改正了《基础》一章的错误。在 ivysrono 协助下改正了《函数》《模块》两章的错误。——以上修订体现在 4.01c 版中。

2017年 1 月 9 日至 2 月 16 日,陆续进行了错字漏字订正与部分译文重写。依 Haruki Kirigaya、Yuki Kiriyama、Nakagawa Kanon 指正改写了《面向对象编程》一章的部分译文。经 Cloud 指正改正了《运算符与表达式》一章的错误。经 yurikaka 指正改正了《前言》《基础》《运算符与表达式》几章的错误。经 aristotll 指正改正了《标准库》一章的错误。经 Tian Zhao 指正改正了《解决问题》一章的错误。——以上修订体现在 4.02c 版中。

2017 年 3 月 19 日,进行了错字漏字订正。依 Tian Zhao 指正,改正了《解决问题》一章的错误。依 yangyangwithgnu 指正修改了《基础》《函数》《模块》《解决问题》《面向对象编程》《数据结构》《标准库》《迈出下一步》《FLOSS》章节的错误。追忆、Yang 同样指出了前述的部分错误。——以上修订体现在 4.03c 版中。

2017 年 5 月 1 日,进行了错字漏字订正与部分译文重写。依 Nangcr 建议修改了《控制流》一章的部分措辞。依邹鹏、Haruki Kirigaya、Yuki Kiriyama、藍星アキラ、shuven 指正与建议改写了《面向对象编程》一章的部分译文与多处翻译错误。——以上修订体现在 4.04c 版中。

2017 年 7 月 6 日,进行了错字漏字订正。在 shuizhongyueming 的帮助下修改了《运算符与表达式》《安装》《面向对象编程》章节的错误。在 Leon0824 的帮助下修改了《基础》《函数》《模块》几章的错误。依 cobeee 指正修改了《翻译》一章的错误。依 Alexander Nie 的指正调整了《函数》章节的部分内容。依 192****543 指正修改了《第一步》章节的错误。依 薛景老师 指正改正了《关于 Python》章节的错误。依 genkagen 指正改正了《异常》《输入与输出》章节的错误。依 nastydt 指正改正了《面向对象编程》《运算符与表达式》一章的错误。依 wang454 指正改正了某一示例程序的错误。——以上修订体现在 4.05c 版中。

2017 年 7 月 28 日,进行了错字漏字订正。依 David Wang 的指正改正了《更多》《迈出下一步》章节的错误。依 薛景老师 指正改成了《第一步》《基础》《运算符与表达式》《控制流》章节的错误。依 Lulu Zeng 指正修改了《面向对象编程》章节的错误。依 LazyWolf Lin 指正与建议修改了《控制流》《函数》章节的错误与措辞。依 Kuno Kuno 指正修改了《面向对象编程》章节的错误。依 Cobeee 指正修改了《本书由来》章节的错误。本次修订得到了 Haruki Kirigaya 的协助,他参与修改了部分上述提到的错误,并指出了其它错误,具体章节包括《第一步》《基础》《运算符与表达式》《控制流》《函数》《解决问题》《面向对象编程》《异常》,在此深表感谢。——以上修订体现在 4.06c 版中。

2017 年 11 月 1 日,对错字漏字以及误译错译进行了集中修订。依 Lyfeway 指正修改了《数据结构》《面向对象编程》一章的错误。依单行道指正修改了《附录:本书由来》一章的错误。依 Starnight Cyber 指正修改了《基础》一章的错误。依chchuj 指正修改了《面向对象编程》一章的错误。依 YangtseSu 指正修改了《模块》一章的错误。依小陈指正改正了《数据结构》一章的错误。依夜雨指正改正了《函数》一章的错误。在本次修订过程中,来自 Little Train Branch 群组的朋友 Haruka、Haruki Kirigaya、Yuki Kiriyama、藍星アキラ 检查了修订草稿,并对多处修订方案提出了具体的建议,同时还指出了先前尚未发现的错误,在此向他们表示感谢。——以上修订体现在 4.07c 版中。

2018 年 2 月 4 日,对错字漏字与错译误译进行了集中修订。依颜、urzeye 指正改正了《基础》一章的错误。依 Cobeee 指正修改了《基础》《控制流》《译者前言》章节的错误,对误记了他的名字深表歉意。依 Shihaotian 的建议调整了《函数》一章中一个示例程序的输出内容。依 Xiaolei Wang 指正改正了《基础》一章的错误。依 ddtyjmyjm 指正改正了《异常》一章的错误。依 whxaing 指正改正了《函数》一章的错误。依 David Jiang 指正改正了《安装》《基础》《运算符与表达式》《模块》《数据结构》《输入与输出》《迈出下一步》《附录:修订历史》章节的错误。依 gooyie 指正改正了《运算符与标表达式》章节的错误,Haruka、Haruki Kirigaya、Yuki Kiriyama、藍星アキラ 参与了有关本修正的讨论,并提供了相关建议。——以上修订体现在 4.08c 版中。

同时,由于域名配置问题,从 4.08c 版开始,本书存放域名由 bop.molun.net 迁移至 bop.mol.uno。原域名理论上依旧有效。