Python 入门建议

  • 2015-08-18 更新:加入两本在线书到“没有终点“部分。
  • 2021-01-22 更新:加入 devdoc 和 IDE 。
  • 2021-06-23 更新:加入新的项目源码。

对于我来说,Python 似乎已经入门了。那就把我的入门建议写出来吧,能让看到的人避免走弯路就好。下面的标题按时间顺序排列。

Python2 还是 Python3 ?

毫无疑问,Python2 是辉煌,Python3 是未来。不要相信网上那些大牛吐槽 Python3 速度慢、兼容性差、库少等等言论了,仔细看看那些言论的发表时间。现在都特么已经2015了好么。

如果某个库到现在还没有兼容 Python3,那么放弃它就是了,因为它的作者已经抛弃了它。

使用 Python3 ,你不会再碰到恶心的 i18n 问题,也不会再面对那些奇怪的2包名了。

选 Python3 吧,因为你属于未来。

第一本 Python 书?

自然是这本了:The Python Tutorial中文翻译

Python 文档的质量很高,更新也非常及时。看完上面这本(大约2天就够了),你就已经了解了 Python 最主要的特性。注意中文翻译版可能有些错误,应和原版一起阅读。

离线文档

在 Windows/Linux 上安装 Zeal ,在 Mac OS X 上安装 Dash,然后下载 Python 的离线文档。

若是不愿意使用上面的软件,可以直接下载 Python.org 提供的离线文档,建议下载 HTML 版本,这样搜索会比较快速。

我常用的方案是在本地架设 HTTP Server(使用Apache 或者 Nginx),使用本地站点定位(例如:http://localhost/docs),这样可以整合许多可用的文档,搜索起来比较方便,例如这个:http://doc.zengrong.net/python/

推荐开源项目 DevDocs,支持离线访问。

编辑器/IDE

如果没有什么偏好的话,可以使用 Sublime 。若是喜欢 IDE 类型,可以使用 PyCharm 这个和 Intellij IDEA 同源的优秀 IDE。若已经加入 Vim 或 Emacs 党,就什么都不用选。

2021-01-22 更新:

我在 Python日课-2.2-IDE的选择 中推荐了 VSCode/Notepad++/Geany ,也很值得尝试。

Coding with Quick And Dirty

接着可以写一些菜鸟级的程序了。把以前用 bash 写的打包脚本神马的拿来改一改,用 sed/awk 写的文本分析器拿来重写下,找点自信让自己继续下去。不要太关注是否采用了 Python 风格的用法,这个过程的重点在于建立自信和找到使用 Python 的快乐感觉。

在这个过程中,不可避免的会接触到 Python 的标准库,用 Quick and Dirty 的方法去学习它们,让它们在你脑海中留下印象。

在这个不超过一周的过程中,可能会发出感叹:Kao,真 TMD 的简单。

Coding Reference

在 Coding 的过程当中,可能会碰到不少问题,毕竟一门流行的语言都有一个完善的社区和工作流程,要干活,就要了解他们。

我将这些信息集中在这里,方便查找:

第二本 Python 书

第二本当然就是传说中 The Fuck Reference 了。你不可能在第一时间全部读完它,但你至少应该先读完这个:Data model 。Data Model 本来就是一个面向对象语言的基础,先读完这个,才能够更顺畅地阅读 Reference 的其他部分。

Reference 应该作为字典,在不懂的时候就来查一下,在没事的时候就来翻一下。毕竟,这些是 Python 最基础的东西。

Coding With a Project

现在的 Coding 不能局限于脚本级别了,你应该完成一个项目。这个项目可以是你以前项目的 Python 翻版,也可以从头设计一个新的小型项目。

这个部分对你的帮助在于,通过完整项目的设计,你能将以前的工程化经验应用到 Python 中来(或者反过来说也行),你会更了解 Python 在项目管理上的一些技能。

这方面值得单独写一篇文章来说明,不过我似乎不必写了,因为已经有一篇了: Open Sourcing a Python Project the Right Way

下面是我初学 Python 的时候建立的两个项目,我一直在对它们维护到现在。他们的内容足够简单,可以拿来稍作参考。

  • rookout 一些我自己常用的 python 功能封装,Python 库项目。已经发布到 pipy 上。
  • wpcmd 通过 WordPress XML-RPC 接口在本地创建、更新 WordPress 博客的命令行工具,Python 命令行工具项目。zengrong.net 就是使用该工具进行管理。

如果对 GUI 开发感兴趣,我建议在这个阶段直接开启一个 GUI 项目,使用 PyQt5,然后使用 cx_Freeze 打包。

在这个阶段,必须要注重 code style,深入理解各种不同用法,了解API和标准库(仅仅是了解,不必熟悉),并完全忘记前面施行的 Quick And Dirty 方法。

2021-06-13 更新:

之后我又写了一些稍复杂一些的开源项目,也可以参考。

  • WizNote 转换到 Joplin系列 花了一些时间对这十年的文档进行了整理,把 3000 多篇精简到 2000 多篇,在 2021 牛年春节期间,用 Python 写了一个转换工具 wiz2joplin,完成了十年的转换。
  • pyape 我对 Flask、SQLAlchemy 等相关 WEB 包做的封装,包含构建 RESTFul API 的通用工具。SAGI GAMES 早期的短连接服务器采用这套包来开发。

没有终点

Python 可以做很多事情。科学家用它来做 科学计算,漫画爱好者用它来爬站,程序员们用它来写开源/商业软件,我们也曾经用它做游戏服务器,还有 游戏引擎 直接使用它做脚本语言。

写 Python,需要注意的是它是 Python,不是 C++。对任何一个新的语言,都不要试图完全用自己已有的语言经验去理解和使用它。在程序中要体现出 Python 的特点:lambda、生成器、列表推导式,这些东西不可不用,也不应乱用。

入门到此为止,但学习没有终点。我列出一些可能所有 Python 使用者都需要了解的东西(或需要的资源),而更多的内容,只能根据偏好和使用方向自己选择了。

全文完