The Zen of Python (Python之禅)

Python中有不少的彩蛋。其中最著名的就是Python之禅了。
当在Python提示符下运行 import this,你就可以看到这篇偈文了。确实如果能做到Python之禅的境界,我们的代码也就是经典了。

*The Zen of Python, by Tim Peter
Python之禅, 彼得 提姆 著*

*Beautiful is better than ugly.
美丽胜于丑陋(Python 以编写优美的代码为目标)
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.
不要包容所有错误,除非你默认要这样做(精准地捕获异常,不写 except:pass 风格的代码)*

*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之父
(这里的 Dutch 荷兰人 是指 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之禅的代码可以在\Python37\Lib\this.py中找到。
代码如下,确实很禅。里面的原文使用了凯撒密码进行加密。然后作者使用了一段非常隐晦的代码进行解密。反面的向我们展示了Python之禅。就如Python之禅所说,这些规则至高无上,不能打破,谁叫你不是Python之父呢。

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]))

你可能感兴趣的:(The Zen of Python (Python之禅))