为什么你的 Python 代码需要美观且显式

欢迎来到 Pythonukkah,一个关于 Python 之禅的特别系列。在第一天,我们庆祝前两个原则:美观和显式。
84 位读者喜欢这篇文章。
Searching for code

Opensource.com

Python 贡献者 Tim Peters 于 1999 年向我们介绍了 Python 之禅。二十年后,它的 19 条指导原则在社区中仍然具有现实意义。我们开始我们的 Pythonukkah 庆祝活动——像光明节一样,一个光明节——以 Python 之禅的前两个原则开始:关于美观和显式。

“光明节是光明节,”

“不是一天的礼物,我们有八个疯狂的夜晚。”

—Adam Sandler, 光明节之歌

美观胜于丑陋。

计算机程序的构造和解释 (SICP) 中提出了这个观点:“程序必须首先为人编写,其次才是为机器执行。” 机器不在乎美观,但人们在乎。

一个美观的程序是让人乐于阅读的程序。 这首先意味着它是一致的。 像 Blackflake8Pylint 这样的工具非常适合确保表面层面上的合理性。

但更重要的是,只有人类才能判断人类认为什么是美的。 代码审查和协作式编写代码的方法是构建美观代码的唯一现实途径。 倾听他人的意见是软件开发中的一项重要技能。

最后,如果缺乏意愿,所有工具和流程都将变得毫无意义。 如果不欣赏美观的重要性,就永远不会强调编写美观的代码。

这就是为什么这是第一个原则:它是一种使“美观”成为 Python 社区价值观的方式。 它立即回答:“我们真的在乎美观吗?” 我们在乎。

显式胜于隐式。

我们人类崇尚光明,恐惧黑暗。 光明帮助我们理解模糊的图像。 同样,以更显式的方式编程有助于我们理解抽象的概念。 使事物隐式通常是很诱人的。

“为什么 self 显式地作为方法的第一个参数存在?”

有很多技术解释,但所有这些解释都是错误的。 编写一个元类,使显式列出 self 变得不必要,几乎是 Python 程序员的成人礼。(如果您以前从未这样做过,请这样做;这是一个很棒的元类学习练习!)

self 显式存在的原因不是因为 Python 核心开发人员不想将这样的元类作为“默认”元类。 它显式存在的原因是因为需要教授的特殊情况少了一种:第一个参数是显式的。

即使当 Python 允许非显式事物(例如上下文变量)时,我们也必须始终问:我们确定我们需要它们吗? 我们不能只是显式地传递参数吗? 有时,由于许多原因,这是不可行的。 但是,优先考虑显式性至少意味着提出问题并评估工作量。

接下来阅读
标签
Moshe sitting down, head slightly to the side. His t-shirt has Guardians of the Galaxy silhoutes against a background of sound visualization bars.
自 1998 年以来,Moshe 一直参与 Linux 社区,帮助举办 Linux“安装派对”。 自 1999 年以来,他一直在编写 Python 程序,并为核心 Python 解释器做出了贡献。 Moshe 在 DevOps/SRE 这些术语出现之前就一直是 DevOps/SRE,非常关心软件可靠性、构建可重复性等。

评论已关闭。

Creative Commons License本作品采用知识共享署名-相同方式共享 4.0 国际许可协议进行许可。
© . All rights reserved.