如果说优雅迷人还有些主观的成份,毕竟每个人心中的女神可能不尽相同。但很少会有人不承认Python的简洁高效。人生苦短,我用Python不仅是一句口号,也是Python程序开发高效率的一个真实写照。 与其它开发语言相比,实现同样的功能,在不借助于函数库的前提下,Python代码始终是最简单、最易读的。如果在C、Java和Python三者间进行比较的话,Java是代码量最大的语言,要比C语言长1。5倍,而比Python则长34倍。我们以输出一个数组的元素为例来体验一下: 仅看定义和输出数组元素值的那部分。两种语言都需要三行代码,但是Python的代码明显更短,更不要说Python还有所谓的pythonic的写法: 当然这么写还是有争议的,对一些人来说,它牺牲了可读性。 我们再看一个变量交换的例子: Python的语法显然更简单,它就象我们每天使用的自然语言一样,似乎不借助任何复杂的技巧、甚至不需要懂所谓的编程知识,就能够实现这些功能。C和Java虽然也都能不借助第三个变量,实现一行代码完成变量的值交换,但这样的代码需要一定的技巧,因而容易出错。 简洁(但不需要借助于复杂的技巧)的代码显然更加容易阅读和理解,从而大大加快了开发的速度。的确,在这个信息过载的时代,简洁越来越显示出强大的力量:json取代xml成为更多人传递数据的工具;Markdown则取代了Html、reStructuredText和Word成为我们的文档格式。 删繁就简三秋树,标新立异二月花。繁琐、夸张的巴洛克艺术,无论其多么精致、多么吸引眼球,都无法在这个高度内卷的年代逃脱批判。我们需要那些能够成为我们直觉的工具、符号和思想,以便让我们能够快速响应这日益复杂的世界。 巴洛克风格的波尔图教堂,极尽精致繁复之美 简单即是美。这种哲学思想大致起源于奥卡姆。达芬奇也有类似的思想:简单是极致的精巧,尽管精巧才是那个时代的审美。如果你对这些思想感兴趣,可以阅读JohnMaeda撰写的书籍《TheLawsofSimplicity》。 语言的简洁、优美在Python中的地位是如此重要,以至于它被写进了Python宪章PEP20:Beautifulisbetterthanugly。 优美胜于丑陋 Explicitisbetterthanimplicit。 明了胜于晦涩 Simpleisbetterthancomplex。 简单优于复杂 Complexisbetterthancomplicated。 复杂优于凌乱 Flatisbetterthannested。 扁平好过嵌套 Sparseisbetterthandense。 稀疏强于稠密 Readabilitycounts。 可读性很重要! Specialcasesarentspecialenoughtobreaktherules。 特例亦不可违背原则 Althoughpracticalitybeatspurity。 即使实用战胜了纯粹 Errorsshouldneverpasssilently。 错误绝不能悄悄忽略 Unlessexplicitlysilenced。 除非我们确定需要如此 Inthefaceofambiguity,refusethetemptationtoguess。 面对不确定性,拒绝妄加猜测 Thereshouldbeoneandpreferablyonlyoneobviouswaytodoit。 永远都应该只有一种显而易见的解决之道 AlthoughthatwaymaynotbeobviousatfirstunlessyoureDutch。 即便解决之道起初看起来并不显而易见 Nowisbetterthannever。 做总比不做强 Althoughneverisoftenbetterthanrightnow。 然而不假思索还不如不做 Iftheimplementationishardtoexplain,itsabadidea。 难以名状的,必然是坏的 Iftheimplementationiseasytoexplain,itmaybeagoodidea。 易以言传的,可能是好的 Namespacesareonehonkinggreatidealetsdomoreofthose! 名字空间是个绝妙的主意,请好好使用! 这段文字甚至还以彩蛋的方式出现。如果执行以下的命令: 就会输出上面的文字。任何时候,如果我需要引用《ZenofPython》,我都会使用这个方法。 PEP20还藏着另一个彩蛋。我们说它应该有20条规则,但实际上我们只能看到19条,这是为什么呢?