理解 Python 编程中的复杂与繁复之别 | AI生成和翻译

Home 2026.01

Question: 如何理解 Zen of Python 中的原则 “Complex is better than complicated”?

Answer:

“Complex is better than complicated”(复杂优于繁琐)是 The Zen of Python(在 Python 解释器中输入 import this 即可查看)中的核心指导原则之一。它区分了两个相似但不同的概念:

在 Python 哲学中,这一原则鼓励编写能够接纳必要复杂性(例如在适当的时候使用 advanced features、多个 classes 或 abstractions)的代码,而不是制造偶然的繁琐(例如:clever tricks、过深的嵌套或 spaghetti code)。

Key Takeaways

Examples

倾向于 Complex (好):

# 使用带有条件的 list comprehension —— 虽然内在有一点复杂,但是 idiomatic 且清晰
squares_of_evens = [x**2 for x in numbers if x % 2 == 0]

避免 Complicated (不好):

# 用晦涩的逻辑手动构建相同的列表
squares_of_evens = []
i = 0
while i < len(numbers):
    if numbers[i] % 2 == 0:
        squares_of_evens.append(numbers[i] ** 2)
    i += 1

另一个经典例子:

Complex (好): 使用合理的 class hierarchy 或者像 collections.abc 这样的 library 来实现自定义 container type。

Complicated (不好): 对 built-in types 进行 Monkey-patching,或者使用晦涩的 __getattr__ 技巧来逃避学习正确的方法。

简而言之:当一个问题确实需要深度时,应利用 Python 丰富的工具优雅地解决它(”complex”)。永远不要为了显得聪明而把代码绕成团(”complicated”)。这与 Zen of Python 的其他原则相辅相成,如 “Simple is better than complex”(针对简单问题时)和 “Readability counts”。

References:


Back

x-ai/grok-4.1-fast

Donate