Python 之禅

2017 年 5 月 31 日 MacTalk 池建强

题图:by 渡渡鸟 from 豆瓣一刻

5月的北京,气温渐渐升高,但人们依然能够在清晨和旁晚感受到春夏之交的善意。周末早早起来,阳光明亮,送了女儿去参加一个不知名的考试,回来的路上买了些好看的水果。道边有鲜花怒放,我用手机拍了,用做今天的配图。

上周写了一篇「人生苦短,我用 Python」,很多读者说意犹未尽,其实那篇文章已经足够长了。在这样一个时间被严重碎片化的时代,有那么多读者愿意花时间阅读一篇近5000字的技术文章,我还是很开心的。其实,对于任何一门编程语言来说,试图用几篇文章把这门语言的历史、发展和架构讲清楚都是不可能的,遑论细节。

物理实验告诉我们,世界是物体连续的、永不停歇的涌动,是稍纵即逝的实体不断出现和消失的过程,是一系列的震荡。一门编程语言的发展也是如此,其中总有一些稍纵即逝的「Flash Point」在左右着它的发展,代表着某种或者先进或者拖后腿的特性,如果你们有兴趣的话,后续我们就聊聊 Python 语言中那些有趣的「点」。

Python 之禅

看到这个题目,你可能会觉得我要写点神神叨叨的东西了,或者是一篇「禅与维修摩托车的艺术」。了解 Python 历史的人都知道,Python 之禅并不是我说的,而是 Tim Peters 说的。2004年8月19日,Tim 在 Python Shell 中增加了一段偈语般的诗句,解释了什么是编程之禅。想看到这段文字的读者,打开终端中输入 python,进入 Python 交互式编程模式后,输入「import this」,会得到一下文字:

>>> import this

The Zen of Python, by Tim Peters

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.
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 之父(Guido 是荷兰人)
现在比以前更好,做好过不做,但也不要瞎做
如果某个实现很难解释清楚,那一定是个坏主意
如果某个实现很容易解释,那可能是个好主意
命名空间是个好东西,要多加应用

这些诗一样的文字表达了 Python 的编程之禅,那就是:代码要优美,要可读,要简单,要有间隔,要去处理异常,不要乱用 except:pass,要去找到最好的解决方案,写代码之前要想清楚,但也不要总去想而什么都不做,实践才能出真知,好的代码应该很容易向别人解释清楚,反之亦然,合理使用 Python 的命名空间,等等。

如果你想进入 Python 的编程世界,我希望你仔细阅读这段文字,虽然记不住什么,但是总有一天,你会在不经意间,回过头来,重新品味 Python 之禅。

如果你希望这个系列继续写下去,请告诉我。

温柔按压,冷酷赞赏

登录查看更多
1

相关内容

【干货书】流畅Python,766页pdf,中英文版
专知会员服务
223+阅读 · 2020年3月22日
【2020新书】数据科学:十大Python项目,247页pdf
专知会员服务
212+阅读 · 2020年2月21日
【书籍推荐】简洁的Python编程(Clean Python),附274页pdf
专知会员服务
173+阅读 · 2020年1月1日
Keras François Chollet 《Deep Learning with Python 》, 386页pdf
专知会员服务
144+阅读 · 2019年10月12日
【新书】Python编程基础,669页pdf
专知会员服务
186+阅读 · 2019年10月10日
机器学习入门的经验与建议
专知会员服务
90+阅读 · 2019年10月10日
吃鸡手游竟然是Python写的?
机器学习算法与Python学习
6+阅读 · 2018年9月11日
Python3.7中一种懒加载的方式
Python程序员
3+阅读 · 2018年4月27日
这几本Python新书特别赞
图灵教育
19+阅读 · 2018年3月1日
Python机器学习教程资料/代码
机器学习研究会
8+阅读 · 2018年2月22日
细数10个隐藏在Python中的彩蛋
七月在线实验室
4+阅读 · 2018年1月16日
教你用Python来玩跳一跳
七月在线实验室
6+阅读 · 2018年1月2日
【推荐】用Python/OpenCV实现增强现实
机器学习研究会
14+阅读 · 2017年11月16日
【学习】(Python)SVM数据分类
机器学习研究会
6+阅读 · 2017年10月15日
代码这样写不止于优雅(Python版)
数说工作室
4+阅读 · 2017年7月17日
Arxiv
22+阅读 · 2018年8月30日
Arxiv
6+阅读 · 2018年7月29日
VIP会员
相关VIP内容
【干货书】流畅Python,766页pdf,中英文版
专知会员服务
223+阅读 · 2020年3月22日
【2020新书】数据科学:十大Python项目,247页pdf
专知会员服务
212+阅读 · 2020年2月21日
【书籍推荐】简洁的Python编程(Clean Python),附274页pdf
专知会员服务
173+阅读 · 2020年1月1日
Keras François Chollet 《Deep Learning with Python 》, 386页pdf
专知会员服务
144+阅读 · 2019年10月12日
【新书】Python编程基础,669页pdf
专知会员服务
186+阅读 · 2019年10月10日
机器学习入门的经验与建议
专知会员服务
90+阅读 · 2019年10月10日
相关资讯
吃鸡手游竟然是Python写的?
机器学习算法与Python学习
6+阅读 · 2018年9月11日
Python3.7中一种懒加载的方式
Python程序员
3+阅读 · 2018年4月27日
这几本Python新书特别赞
图灵教育
19+阅读 · 2018年3月1日
Python机器学习教程资料/代码
机器学习研究会
8+阅读 · 2018年2月22日
细数10个隐藏在Python中的彩蛋
七月在线实验室
4+阅读 · 2018年1月16日
教你用Python来玩跳一跳
七月在线实验室
6+阅读 · 2018年1月2日
【推荐】用Python/OpenCV实现增强现实
机器学习研究会
14+阅读 · 2017年11月16日
【学习】(Python)SVM数据分类
机器学习研究会
6+阅读 · 2017年10月15日
代码这样写不止于优雅(Python版)
数说工作室
4+阅读 · 2017年7月17日
Top
微信扫码咨询专知VIP会员