Python之禅(Zen of Python)
代码:
import this
控制台截图:
翻译
- 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.(虽然这种方案并不是显而易见的,因为你不是那个荷兰人[^1])
- Now is better than never.(现在开始做比不做好)
- Although never is often better than *right* now.(不做比盲目去做好[^2])
- 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!(命名空间非常有用,我们应当多加利用)
[1]: 这里指的是 Python 之父 Guido van Rossumm。
[2]: 极限编程中的YAGNI原则
Python之禅 by Tim Peters
优美胜于丑陋(Python 以编写优美的代码为目标)
明了胜于晦涩(优美的代码应当是明了的,命名规范,风格相似)
简洁胜于复杂(优美的代码应当是简洁的,不要有复杂的内部实现)
复杂胜于凌乱(如果复杂不可避免,那代码间也不能有难懂的关系,要保持接口简洁)
扁平胜于嵌套(优美的代码应当是扁平的,不能有太多的嵌套)
间隔胜于紧凑(优美的代码有适当的间隔,不要奢望一行代码解决问题)
可读性很重要(优美的代码是可读的)
即便假借特例的实用性之名,也不可违背这些规则(这些规则至高无上)
不要包容所有错误,除非你确定需要这样做(精准地捕获异常,不写 except:pass 风格的代码)
当存在多种可能,不要尝试去猜测
而是尽量找一种,最好是唯一一种明显的解决方案(如果不确定,就用穷举法)
虽然这并不容易,因为你不是 Python 之父(这里的 Dutch 是指 Guido )
做也许好过不做,但不假思索就动手还不如不做(动手之前要细思量)
如果你无法向人描述你的方案,那肯定不是一个好方案;反之亦然(方案测评标准)
命名空间是一种绝妙的理念,我们应当多加利用(倡导与号召)
Now is better than never!!兄弟们共勉!!!!