后记

终于完成了这本Python教程,可以松一口气。写完一本书不太容易。即使是完稿之后,我还是重新过了三四遍稿子,改动了不少的地方。比如说,我在写对象名时,会习惯性地按照Java的代码规范写成thisObject,而不是PEP8规定的this_object。在我认为,thisObject这样的写法更容易让对象和函数区分开。我当然可以这么做,PEP8只是指导性的代码规范,而不是强制要求。但我又担心自己会误导读者。毕竟,代码不止是写给自己读的。如果用我的书写形式写成Python库,那么其他遵照PEP8的程序员在调用时会不会觉得奇怪?

反反复复思索了很久,直到有一天想到Python诞生时遵循的一个理念:

“如果常识上确立的东西,就可以遵照常识,没有必要过度纠结。”

广告:个人专属 VPN,独立 IP,无限流量,多机房切换,还可以屏蔽广告和恶意软件,每月最低仅 5 美元

于是,我选择了服从PEP8的代码规范,把书中的代码订正了一遍。

你瞧,Python的理念已经开始在指导我。Python吸引我的,正是这样一些旗帜鲜明的理念。这套理念甚至被整理成了一个打油诗。如果你在Python中运行:

import this

就可以调出这个名为“Python之道”(The Zen of Python)的诗。

The Zen of Python, by Tim Peters

Python之道

Beautiful is better than ugly.

美观胜于丑陋。

Explicit is better than implicit.

显示胜于隐式。

Simple is better than complex.

简单胜于复杂。

Complex is better than complicated.

复杂胜于过度复杂。

Flat is better than nested.

平面胜于嵌套。

Sparse is better than dense.

稀少胜于稠密。

Readability counts.

可读性需要考虑。

Special cases aren't special enough to break the rules.

即使情况特殊,也不应打破原则,

Although practicality beats purity.

尽管实用胜于纯净。

Errors should never pass silently.

错误不应悄无声息的通过,

Unless explicitly silenced.

除非特意这么做。

In the face of ambiguity, refuse the temptation to guess.

当有混淆时,拒绝猜测(深入的搞明白问题)。

There should be one-- and preferably only one --obvious way to do it.

总有一个,且(理想情况下)只有一个,明显的方法来处理问题。

Although that way may not be obvious at first unless you're Dutch.

尽管那个方法可能并不明显,除非你是荷兰人。(Python的作者Guido是荷兰人,这是在致敬)

Now is better than never.

现在开始胜过永远不开始,

Although never is often better than *right* now.

尽管永远不开始经常比仓促立即开始好。

If the implementation is hard to explain, it's a bad idea.

如果程序实现很难解释,那么它是个坏主意。

If the implementation is easy to explain, it may be a good idea.

如果程序实现很容易解释,那么它可能是个好主意。

Namespaces are one honking great idea -- let's do more of those!

命名空间是个绝好的主意,让我们多利用它。

这并不是严格的逻辑和哲学理念。有的地方说法有矛盾,必须由读者在实践中取舍。但相信每个人都会被它乐观的理想主义氛围感染。在“Python之道”里,世界是可知的,问题是可以解决的,美与简单是可以抵达的。当你学完了这本编程教程,开始上手Python项目时,你会需要类似的乐观主义。相信我,你一定会觉得写程序很辛苦,会觉得某个问题难以解决,会觉得学编程是一个错误。如果哪一天你没有类似的苦恼,那么你可能已经放弃编程了。

但如果你想继续,别忘了这首“Python之道”,想一想有没有更简单的方法解决你的问题,找一找是否已经存在了那个最好且唯一的方法,甚至是先用一个不太好看但能用的方法。Python讲究实用性。“实用胜于纯净”,Python并非一味沉浸于理想主义。它为了解决现实问题而诞生,并正在解决大量的现实问题。学习编程的过程会有些辛苦,但如果有心,还请快快开始。毕竟,“现在开始胜过永远不开始”。相信我,学成之后你会看到一个不一样的次元。