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 的过程当中,可能会碰到不少问题,毕竟一门流行的语言都有一个完善的社区和工作流程,要干活,就要了解他们。
我将这些信息集中在这里,方便查找:
- 你经常会碰到 PEP 类的东东,它们是什么?—— PEP Purpose and Guidelines
- Python 代码规范 —— Style Guide for Python Code
- 安装第三方包,各种不同的方法令人很焦虑? —— Python 包管理工具解惑
- 你需要一个虚拟环境。 —— Python 虚拟环境
- 这是不可避免的 —— Python2/3 在Windows 下的共存
__init__.py 和 __main__.py
第二本 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 使用者都需要了解的东西(或需要的资源),而更多的内容,只能根据偏好和使用方向自己选择了。
- Python 2/3 区别(What’s New In Python 3.0)
- 2to3 - Automated Python 2 to 3 code translation
- PyZh
- 全局解释器锁 GIL
- Python 测试框架的选择
- 《深入Python3》
- 《Python Cookbook 3rd Edition》
- 《用Python做科学计算》
- 笨办法学Python
- A Beginner’s Guide to Python
- 文章ID:2335
- 原文作者:zrong
- 原文链接:https://blog.zengrong.net/post/python-rookie/
- 版权声明:本作品采用 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 进行许可,非商业转载请注明出处(原文作者,原文链接),商业转载请联系作者获得授权。