迈出下一步
如果到现在你已经阅读过本书并且编写了许多程序,那么你一定已经开始熟悉并且习惯 Python 了。或许你已经创建了一些 Python 程序来尝试完成一些工作,同时锻炼你自己的 Python 技能。如果你尚未至此,你也应该作出努力。现在我们面临的问题是“下一步该做什么?”。
我会建议你试图解决这个问题:
编写一款你自己的命令行地址簿程序,你可以用它浏览、添加、编辑、删除或搜索你的联系人,例如你的朋友、家人、同事,还有他们诸如邮件地址、电话号码等多种信息。这些详细信息必须被妥善储存以备稍后的检索。
如果你回想至今我们学过、讨论过、遇见过的所有东西,你会发现这其实非常简单。如果你仍想要有关如何进行的提示,这儿倒是有一些。[^2]
一旦你能够做到这件事,你便可以说自己是一名 Python 程序员了。现在,赶快写封邮件来感谢我写出了这么棒的一本书 ;-)。这一步并非强制但我仍建议如此。同时,请考虑购买本书的实体书来支持本书的后续改进。
如果你觉得上面的程序太容易了,这还有另一个:
实现替换命令。这个命令能将一串字符串替换为另外提供的文件或列表中的另一串。
只要你想,替换命令可以或简单或复杂地实现,从简单的字符串替换到搜寻搭配的样式(正则表达式)。
下一个项目
如果你发现上面的程序都能很容易地编写出来,那么看看下面这个完整的项目列表,并尝试编写你自己的程序:https://github.com/thekarangoel/Projects (这一列表与 Martyr2 的超级项目列表相同)。
你还可以看看:
示例代码
学习一门编程语言的最好方式就是编写大量代码,并阅读大量代码:
- Python Cookbook 是一本极具价值的“烹饪法”与提示的集合,它介绍了如何通过 Python 解决某些特定类型的问题。
- Python Module of the Week 是另一本优秀的标准库必读指南。
建议
- The Hitchhiker’s Guide to Python!
- The Elements of Python Style
- Python Big Picture
- “Writing Idiomatic Python” ebook (付费)
视频
问与答
- Official Python Dos and Don’ts
- Official Python FAQ
- Norvig’s list of Infrequently Asked Questions
- Python Interview Q & A
- StackOverflow questions tagged with python
教程
- Hidden features of Python
- What’s the one code snippet/python trick/etc did you wish you knew when you learned python?
- Awaretek’s comprehensive list of Python tutorials
讨论
如果你遇到了一个 Python 问题,但不知道该问谁,那么 python-tutor list 是你提问的最佳场所。
请确保你会自己做你的家庭作业,你会首先尝试自己解决问题,同时,还要会问聪明的问题。
新闻
如果你希望了解 Python 世界的最新动态,那就跟随 Official Python Planet 的脚步吧。
安装库
Python 库索引中包含了大量开源的库,你可以在你自己的程序中使用它们。
要想了解如何安装并使用这些库,你可以使用 pip。
创建一个网站
学习使用 Flask 来创建你自己的网站。下面这些资源有助于你开始学习:
图形软件
假设你希望使用 Python 来创建你自己的图形程序。这可以通过采用一个 GUI(Graphical User Interface,图形用户界面)库和它们的 Python 绑定来实现。绑定是允许你用 Python 编写你自己的程序,然后使用它们在 C 或 C++ 或其它语言写编写的库。
使用 Python 的 GUI 有许多选择:
Kivy
PyGTK
- 这是 GTK+ 工具包的 Python 绑定,它是构建 GNOME 的基础。GTK+ 有许多奇怪的用法,但是你一旦习惯了使用它,就能很快的创建出你的 GUI 应用。Glade 图形界面设计工具是不可或缺的。它的文档至今仍在不断改进。GTK+ 在 GNU/Linux 下能够良好工作,但是它针对 Windows 平台的移植工作尚未完成。你可以使用 GTK+ 创建免费或专有的软件。要想开始使用,请阅读 PyGTK 教程。
PyQt
- 这是 Qt 工具包的 Python 绑定,它是构建 KDE 的基础。 受益于 Qt Designer 与令人惊讶的 Qt 文档,Qt 十分容易使用也十分强大。如果你希望创建一款开源(GPL)软件,你可以免费使用 PyQt,不过如果你想创建专有的比原软件,你需要购买它。从 Qt 4.5 开始你可以使用它来创建不采用 GPL 授权的软件。要想开始使用,请阅读 PySide。
wxPython
- 这是 wxWidgets 工具包的 Python 绑定。wxPython 有一个与之相关的学习曲线。不过,它非常便携,并且可以运行在 GNU/Linux、Windwos、Mac、甚至是嵌入式平台中。有许多 IDE 可以采用 wxPython,并且包含了 GUI 设计工具,例如 SPE (Stani’s Python Editor) 还有 wxGlade GUI 构建工具。你可以使用 wxPython 来创建免费或专有的软件。要想开始使用,请阅读wxPython 教程。
GUI 工具总结
想要了解更多的选择,可以参阅 GuiProgramming wiki page at the official python website。
不幸的是,Python 没有一款标准 GUI 工具。我建议你根据你的实际情况从上面列出的工具中进行挑选。第一个因素是你是否愿意为使用任何 GUI 工具付费。第二个因素是你希望你的程序只在 Windwos 上运行,还是在 Mac 和 GNU/Linux 上运行,还是在它们三者之上都能运行。第三个因素,如果 GNU/Linux 是目标平台,那你是要做 KDE 用户还是 GNOME 用户。
有关更详尽且更全面的分析,请参阅 ‘The Python Papers, Volume 3, Issue 1’ (PDF) 的第 26 页。
各种实现
编程语言主要有两部分——语言与软件。语言是你如何编写,软件是你怎样实际运行我们的程序。
我们一直在使用 CPython 软件来运行我们的程序。它被成为 CPython 是因为它是使用 C 语言编写的,同时它也是经典的(Classical) Python 解释器。
还有其他软件可以运行你的 Python 程序:
- 在 Java 平台上运行的 Python 实现。这意味着你可以在 Python 语言中使用 Java 的库与类,反之亦然。
- 在 .NET 平台上运行的 Python 实现。这意味着你可以在 Python 语言中使用 .NET 的库与类,反之亦然
- 用 Python 编写的 Python 实现!这是一项研究项目,旨在于使其能快速且方便的改进解释器,因为解释器本身就是用动态语言编写的了(而不是采用上述三种 C、Java、C# 等动态语言来编写)。
还有其它诸如 CLPython——采用 Common Lisp 编写的 Python 实现,和Brython ,它在 JavaScript 解释器之上实现,意味着你可以使用 Python(而非 JavaScript)编写你的 Web 浏览器(“Ajax”)程序。
上述这些实现每一种都有其大有作为的专门领域。
函数式编程(面向高阶读者){#functional-programming}
当你开始编写更加庞大的程序时,你应该清楚了解更多关于使用函数的方式来进行编程,而不是我们在《面向对象编程》章节中所学习的基于类的方式进行编程:
- Functional Programming Howto by A.M. Kuchling
- Functional programming chapter in ‘Dive Into Python’ book
- Functional Programming with Python presentation
- Funcy library
- PyToolz library
总结
现在我们已经行至本书末尾,不过,正如人们所说,这是昭示着开始的终结!你现在已经是一名狂热 Python 用户,毫无疑问,你已准备好通过 Python 来解决诸多问题了。你可以开始自动化你的电脑,去做任何你以前难以想象的事情,你可以开始编写你自己的游戏,开始做更多更多的事,远不仅此。来,让我们出发吧!
[^2]: 创建一个类用来表示人的信息。使用一份字典来存储人物对象,将它们的名字当作键值。使用 pickle 模块来将对象长久地存储在硬盘上。使用字典的内置方法来添加、删除或编辑地址簿中的人物。——原书注