当前位置:首页>python>The Zen of Python | Python的哲学

The Zen of Python | Python的哲学

  • 2026-10-11 05:58:22
The Zen of Python | Python的哲学

The Zen of Python
Python的哲学

在你进入 Python 的 CMD 或者终端里,甚至是 IDE 里,写入这样的一段代码,然后直接运行:

import this

你不会看见任何花哨的计算结果或者复杂的输出。后台只会刷出一首充满了智慧、哲学与禅意的英文诗 《The Zen of Python》(Python 之禅)。

它是 Python 的核心开发者 Tim Peters 给每一个 Python 使用者的 心法。

The Power of Elegance

Beautiful is better than ugly.

优美胜于丑陋。

很多人会想,反正代码是给计算机看的,只要能运行,随便怎么写。但 Python 之禅第一句话就告诉你:代码是给人看的,必须足够优雅。

我们以过滤列表中的偶数为例:

  • Ugly 写法:
# 叠一堆括号和循环
numbers = [1, 2, 3, 4, 5]
evens = []
for i in range(len(numbers)):
if numbers[i] % 2 == 0:
        evens.append(numbers[i])
  • Beautiful 写法:
# 列表推导式简洁明了
numbers = [1, 2, 3, 4, 5]
evens = [x for x in numbers if x % 2 == 0]

不需要多余的变量,不仅看着赏心悦目,接手代码的同事也会快速明白用意。

Fool isn't Bad!

Explicit is better than implicit.

明了胜于晦涩。

虽然 Python 提供了很多一行代码操作,但是并不是这是最好的选择。

比如,有些人很喜欢炫技,觉得别人看不懂自己的代码就能显得自己很强。但是 Python 很反对这种谜语人操作。

比如,我们想写一个根据 VIP 等级进行折扣的函数:

  • Implicit 写法:
# 强行用一行 Lambda 定义函数
get_discount = lambda u: 0.5 if u.vip == 3 else (0.8 if u.vip == 2 else (0.9 if u.vip == 1 else 1.0))
  • Explicit 写法:
def get_discount(user):
if user.vip == 3:
return 0.5
if user.vip == 2:
return 0.8
if user.vip == 1:
return 0.9
return 1.0

尽管代码行数变多了,但是它更加简单明了,能用简单的逻辑思想把复杂的计算过程描述清楚。这样就是自己也能很好理解代码。

Best Way Should be One

There should be one-- and preferably only one --obvious way to do it.

做一件事,应该只有一种,而且最好只有一种显而易见的解决办法。

如果你用过 Perl,它的座右铭是“条条大路通罗马”,一个问题能有 n 种编码方式,导致程序员看代码成本极大。

而 Python 则显得克制了很多。因为 Python 希望不管是谁来写这个逻辑,代码都应该是大同小异,这样就降低了团队协作的成本。

例如互换两个变量的值:

  • 其他编程语言的写法(例如 C++ 的写法)通常需要借助第三者:
int a = some_value1();
int b = some_value2();
// 交换必须借助第三个变量
int temp = a;
a = b;
b = temp;
  • 而 Python 指定的标准写法却十分明了:
a, b = b, a

只要大家都遵守了 Python 推荐的标准,那么沟通成本自然降低。

Simple is Usually Better

Simple is better than complex. Flat is better than nested.

简单胜于复杂。扁平胜于嵌套。

代码最忌讳的就是过度设计。很多人学了一些设计模式,就习惯性的在一些小功能上嵌套多层结构,代码一层一层往下套,就像 GTA 的无效 if 嵌套。

而 Python 告诉我们,能躺着绝不站着,能简单绝不复杂!

对于一个多重条件的组合判断,很多人可能是这样写的:

  • 套娃结构让代码疯狂缩进:
def active_user(user):
if user is not None:
if user.is_active:
if user.has_permission:
                do_something()
  • 为什么不直截了当,拒绝无效扩张:
def active_user(user):
if user is None or not user.is_active or not user.has_permission:
return
    do_something()

Tip of the Iceberg

《Python之禅》一共有 19 条原则,今天聊的,只是冰山一角。

它教给我们的不是怎么写代码,而是怎么去克制。虽然随着 AI 的进步,编程正在被各种 Agent 所替代,但是这种好的习惯,不也能延伸到我们的生活哲学当中吗?


往期回顾:

快来围观一下2026年高考周的GitHub热门吧!

str的内置函数|Python自学成才(番外篇2)

用Matplotlib画小提琴图

一起来用OpenCV-Python搞图像图像轮廓提取 | Part.6

字符串str的操作|Python自学成才(番外篇1)

最新文章

随机文章