迈出下一步

如果到现在你已经阅读过本书并且编写了许多程序,那么你一定已经开始熟悉并且习惯 Python 了。或许你已经创建了一些 Python 程序来尝试完成一些工作,同时锻炼你自己的 Python 技能。如果你尚未至此,你也应该作出努力。现在我们面临的问题是“下一步该做什么?”。

我会建议你试图解决这个问题:

编写一款你自己的命令行地址簿程序,你可以用它浏览、添加、编辑、删除或搜索你的联系人,例如你的朋友、家人、同事,还有他们诸如邮件地址、电话号码等多种信息。这些详细信息必须被妥善储存以备稍后的检索。

如果你回想至今我们学过、讨论过、遇见过的所有东西,你会发现这其实非常简单。如果你仍想要有关如何进行的提示,这儿倒是有一些。

如果你觉得上面的程序太容易了,这还有另一个:

实现替换命令。这个命令能将一串字符串替换为另外提供的文件或列表中的另一串。

只要你想,替换命令可以或简单或复杂地实现,从简单的字符串替换到搜寻搭配的样式(正则表达式)。

下一个项目

如果你发现上面的程序都能很容易地编写出来,那么看看下面这个完整的项目列表,并尝试编写你自己的程序:https://github.com/thekarangoel/Projects#numbers (这一列表与 Martyr2 的超级项目列表相同)。

你还可以看看:

示例代码

学习一门编程语言的最好方式就是编写大量代码,并阅读大量代码:

建议

视频

问与答

教程

讨论

如果你遇到了一个 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 程序:

  • Jython
    • 在 Java 平台上运行的 Python 实现。这意味着你可以在 Python 语言中使用 Java 的库与类,反之亦然。
  • IronPython
    • 在 .NET 平台上运行的 Python 实现。这意味着你可以在 Python 语言中使用 .NET 的库与类,反之亦然
  • PyPy
    • 用 Python 编写的 Python 实现!这是一项研究项目,旨在于使其能快速且方便的改进解释器,因为解释器本身就是用动态语言编写的了(而不是采用上述三种 C、Java、C# 等动态语言来编写)。

还有其它诸如 CLPython——采用 Common Lisp 编写的 Python 实现,和Brython ,它在 JavaScript 解释器之上实现,意味着你可以使用 Python(而非 JavaScript)编写你的 Web 浏览器(“Ajax”)程序。

上述这些实现每一种都有其大有作为的专门领域。

函数式编程(面向高阶读者)

当你开始编写更加庞大的程序时,你应该清楚了解更多关于使用函数的方式来进行编程,而不是我们在《面向对象编程》章节中所学习的基于类的方式进行编程:

阅读此教程可以加强你与 Python 的兴趣 — — 也许你更渴望用 Python 去解决你现实中的问题。从哪里去提升呢?

本教程只是 Python 众多文档中的一页。更多的文档你可以从这里获取:

  • Python 的标准库:

    你需要完整地浏览本指南,它(简洁地)阐述了语言中的类型、函数和标准库中的模型。本 Python 基础发行手册包括了 大量 额外的代码。它们是 Unix 的邮箱、通过 HTTP 检索文档、创建随机数、解析命令行选项、创建 CGI 程序、压缩数据等等项目。参考过这些项目可以让你在遇到类似的问题知道什么能用得上。

  • 安装 Python 的模块 解释了如何去安装一些其他 Python 用户完成的模块。

  • Python 语言的参考资料: 一些关于 Python 的语法和语义的详细解释。它也许生涩难懂,但对你详细地了解到该语言的本体非常有用。

关于 Python 的更多学习资源:

  • https://www.python.org: Python 主网站,它包含了代码、文档和 Python相关网站的链接。这个网站在全世界各地有很多镜像,比如欧洲、日本和澳大利亚,你可以访问镜像网站来获取更快速的体验,当然这取决于你的地理位置。
  • https://docs.python.org: 可以快速访问 Python 文档。
  • https://pypi.org: Python Package Index 也被叫做 Cheese Shop,提供了一个Python模块下载列表,这些模块都是由 Python 用户所创建的。如果你想发布的你代码,并期望别人也能找到,你可以在这里注册。
  • https://code.activestate.com/recipes/langs/python/: Python Cookbook 包含了大量的代码示例、模块用法和实用的脚本。特别值得注意的是,有一本书名字也叫 Python Cookbook (O’Reilly & Associates, ISBN 0-596-00797-3.)
  • http://www.pyvideo.org 收集了来自会议和用户组讨论的 Python 相关的视频。
  • https://scipy.org: Python 的科学项目包括用于快速阵列计算和操作的模块,再加上诸如线性代数、傅立叶变换、非线性解算器、随机数分布、统计分析等诸如此类的软件包。

对于 Python 的相关问题,你可以发布到新闻组 comp.lang.python ,或者投稿到 python-list@python.org. 新闻组和投稿都是自动转发的,因此你提交到一个那里,就会自动转发给其他人。每天都会有上百个提交,包括问问题(和回答问题)、提出建议的新特性和发布新模块等等。投稿地址在 https://mail.python.org/pipermail/.

在提交问题前,一定要先检查 Frequently Asked Questions (也被称为FAQ)。FAQ回答了很多问题,而且有的问题会反复出现。所以里面很可能已经包含了你问题的解决方法。

参考资料