本文是Python之禅专题系列的第二篇,我们将重点介绍第三和第四原则:简单和复杂。Ilsemblequelaperfectionsoitatteintenonquandiln'yaplusrienàajouter,maisquandiln'yplusrienàretrancher。似乎完美最终不是在没有任何东西可以添加的时候达到的,而是在没有任何东西可以去掉的时候。“完美不是没有增加,而是没有减少。”-AntoinedeSaint-Exupéry,TerredesHommes,1939编程中最常见的考虑是与复杂性的斗争,只是想写出别人无法入门的复杂代码,这对每个程序员来说并不难。如果你没有触及代码简单性和复杂性之间的权衡,那么《Python 之禅》就会少一个角。简单胜于复杂当你有选择的时候,你应该选择简单的解决方案。在Python中几乎没有什么是不能完成的,这意味着设计奇特的程序来解决明显的问题不仅可能而且容易。正因为如此,在编程时,应该记住,代码的简洁性是最容易失去的东西,也是最难重新获得的东西。这意味着,当你可以选择功能来表达时,不要引入额外的类;避免使用强大的第三方库通常可以帮助您针对紧急问题场景设计更合适的短函数。然而,它的根本意图是让你减少对未来的计算,专注于解决手头的问题。以简单和优雅为指导原则的代码在未来比包含所有未来变量的代码更容易修改。复杂胜于复杂复杂胜于复杂掌握词语的准确含义对于理解这一令人费解的原理至关重要。形容事物复杂,表示它由许多部分组成,强调组成部分的数量;而描述复杂的东西意味着它包含巨大的差异和不可预测的行为,强调各个组件之间的相互关系和混乱的连接。在解决困难问题时,通常没有简单有效的解决方案。在这一点上,最Pythonic的策略是“自下而上”构建简单的工具,然后将它们组合起来解决问题。这就是对象组合等技术大放异彩的地方。它避免了复杂的继承系统,而是独立的对象将一些方法调用传递给其他独立的对象。这些对象可以独立测试和部署,但最终它们可以合二为一。“底层构造”的另一个例子是使用单分派通用函数singledispatch。丢弃复杂的对象后,我们得到简单的、几乎没有行为的对象和独立的行为。
