《Python之禅》的翻译和解释

转载 2012年03月23日 14:22:32
本文最初发表于恋花蝶的博客(http://blog.csdn.net/lanphaday),如蒙转载,敬请何留全文完整,并连本声明一起转载。
凡是用过 Python的人,基本上都知道在交互式解释器中输入 import this 就会显示 Tim Peters 的 The Zen of Python,但它那偈语般的语句有点令人费解,所以我想分享一下我对它的体会,顺带给出我的翻译。
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之禅 by Tim Peters
优美胜于丑陋(Python 以编写优美的代码为目标)
明了胜于晦涩(优美的代码应当是明了的,命名规范,风格相似)
简洁胜于复杂(优美的代码应当是简洁的,不要有复杂的内部实现)
复杂胜于凌乱(如果复杂不可避免,那代码间也不能有难懂的关系,要保持接口简洁)
扁平胜于嵌套(优美的代码应当是扁平的,不能有太多的嵌套)
间隔胜于紧凑(优美的代码有适当的间隔,不要奢望一行代码解决问题)
可读性很重要(优美的代码是可读的)
即便假借特例的实用性之名,也不可违背这些规则(这些规则至高无上)
不要包容所有错误,除非你确定需要这样做(精准地捕获异常,不写 except:pass 风格的代码)
当存在多种可能,不要尝试去猜测
而是尽量找一种,最好是唯一一种明显的解决方案(如果不确定,就用穷举法)
虽然这并不容易,因为你不是 Python 之父(这里的 Dutch 是指 Guido )
做也许好过不做,但不假思索就动手还不如不做(动手之前要细思量)
如果你无法向人描述你的方案,那肯定不是一个好方案;反之亦然(方案测评标准)
命名空间是一种绝妙的理念,我们应当多加利用(倡导与号召)
比较恶搞的是,其实 this 模块的代码完全违背了这些原则,为了方便你查看它的代码,我把它贴出来:
s = """Gur Mra bs Clguba, ol Gvz Crgref

Ornhgvshy vf orggre guna htyl.
Rkcyvpvg vf orggre guna vzcyvpvg.
Fvzcyr vf orggre guna pbzcyrk.
Pbzcyrk vf orggre guna pbzcyvpngrq.
Syng vf orggre guna arfgrq.
Fcnefr vf orggre guna qrafr.
Ernqnovyvgl pbhagf.
Fcrpvny pnfrf nera'g fcrpvny rabhtu gb oernx gur ehyrf.
Nygubhtu cenpgvpnyvgl orngf chevgl.
Reebef fubhyq arire cnff fvyragyl.
Hayrff rkcyvpvgyl fvyraprq.
Va gur snpr bs nzovthvgl, ershfr gur grzcgngvba gb thrff.
Gurer fubhyq or bar-- naq cersrenoyl bayl bar --boivbhf jnl gb qb vg.
Nygubhtu gung jnl znl abg or boivbhf ng svefg hayrff lbh'er Qhgpu.
Abj vf orggre guna arire.
Nygubhtu arire vf bsgra orggre guna *evtug* abj.
Vs gur vzcyrzragngvba vf uneq gb rkcynva, vg'f n onq vqrn.
Vs gur vzcyrzragngvba vf rnfl gb rkcynva, vg znl or n tbbq vqrn.
Anzrfcnprf ner bar ubaxvat terng vqrn -- yrg'f qb zber bs gubfr!
"""

d
= {}
for c in (65, 97):
   
for i in range(26):
        d[chr(i
+c)] = chr((i+13) % 26 + c)

print "".join([d.get(c, c) for c in s])
这段晦涩、复杂、凌乱的代码,莫非是 Tim Peters 提供的反例?

《Python之禅》的翻译和解释

《Python之禅》的翻译和解释   本文最初发表于恋花蝶的博客(http://blog.csdn.net/lanphaday),如蒙转载,敬请何留全文完整,并连本声明一起转载。 凡是用过 ...

《Python之禅》的翻译和解释

《Python之禅》的翻译和解释   本文最初发表于恋花蝶的博客(http://blog.csdn.net/lanphaday),如蒙转载,敬请何留全文完整,并连本声明一起转载。 ...

python解释器

  • 2017年12月08日 19:17
  • 16.98MB
  • 下载

android python解释器

  • 2017年03月06日 22:05
  • 7.5MB
  • 下载

启动ipython或python解释器自动导入组件(例如:numpy)

引言在用numpy,pandas等一些科学计算库的时候,每次启动ipython我都会重复的导入这些库,这真是烦死了。后来我查看了python和ipython的官方文档解决了这个问题。现在,我总结一下这...

windows 10 uwp python解释器

  • 2017年02月20日 20:53
  • 57KB
  • 下载

计算机程序的构造和解释SICP-python

  • 2017年12月11日 21:59
  • 2.67MB
  • 下载

VSCode中设置Python解释器和pylint的波浪线问题

VSCode中设置Python interpreterPython解释器设置为了在vscode中看到package源码,需要设置好vscode中的Python解释器路径,然后就可以点击右键—>转到定义...

python GIL详细解释

  • 2015年05月08日 22:57
  • 160KB
  • 下载

PYTHON自然语言处理中文翻译

  • 2017年11月27日 19:02
  • 4.27MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:《Python之禅》的翻译和解释
举报原因:
原因补充:

(最多只允许输入30个字)