Python 与 Monty Python:当喜剧梗成为编程语言的 DNA
引言
如果你是一名 Python 开发者,你可能已经无数次地在代码中写下 spam = 1 或 eggs = 'hello',却从未想过这些看似普通的变量名背后隐藏着半个多世纪的喜剧遗产。Python 编程语言与 Monty Python 喜剧团体的联系,远不止于名字本身——它渗透在语言的命名哲学、文档惯例、社区文化乃至整个生态系统中。本文将系统梳理这两者之间千丝万缕的联系。
一、Python 命名与 Monty Python 梗的联系全景
二、Python 的命名:不是蛇,是喜剧
1. Guido van Rossum 的圣诞假期项目
1989年圣诞节期间,荷兰程序员 Guido van Rossum 在荷兰国家数学和计算机科学研究中心(CWI)工作。当时他正在开发 Amoeba 分布式操作系统,需要一种介于 Shell 脚本和 C 语言之间的脚本语言。找不到合适的工具,他决定自己动手创造一门新语言。
在命名这门语言时,Guido 正在阅读 Monty Python’s Flying Circus 的剧本。作为一个狂热的 Monty Python 粉丝,他需要一个"短、独特、略带神秘感"的名字。当时 Amoeba 项目团队有以电视节目命名工具的习惯,而"Python"恰好满足所有条件。
2. 对传统编程语言命名哲学的反叛
在 Python 诞生之前,主流编程语言的命名遵循着严格的"技术传统":
| 语言 | 命名来源 | 命名逻辑 |
|---|---|---|
| FORTRAN | Formula Translation | 技术缩写 |
| COBOL | Common Business Oriented Language | 技术缩写 |
| ALGOL | Algorithmic Language | 技术缩写 |
| Pascal | Blaise Pascal(数学家) | 历史人物 |
| Ada | Ada Lovelace(数学家) | 历史人物 |
| Java | Java 咖啡 | 产品隐喻 |
Python 打破了这一切。它是唯一一门以纯娱乐价值命名的主流编程语言。Guido 明确表示,这是对"自命不凡的命名惯例"的反叛——他选择幽默而非严肃,选择个人爱好而非技术术语。
三、IDLE:致敬 Eric Idle 的 IDE
1. 官方名称与隐藏致敬
Python 的默认集成开发环境叫做 IDLE。官方说法是:IDLE 代表 Integrated DeveLopment Environment(集成开发环境)。但这个缩写略显牵强——因为正确的缩写应该是"IDE"而不是"IDLE"。
实际上,IDLE 的名字是对 Monty Python 成员 Eric Idle 的致敬。正如 Python 的名字来自 Monty Python 团体,IDLE 的名字来自团体中的具体成员。
2. 双重致敬:eric IDE
更有趣的是,Python 社区中还有另一个名为 eric 的 IDE。这个名字同时致敬了 IDLE(Python 的 IDE)和 Eric Idle(Monty Python 成员),形成了一个嵌套式的致敬链条。
四、spam 与 eggs:Python 文档的"元语法变量"
1. 从 foo/bar 到 spam/eggs
在编程世界中,foo、bar 和 baz 是传统的"元语法变量"(metasyntactic variables)——用于示例代码中的占位符名称。这些词源于 1960 年代的 MIT 黑客文化,与 FUBAR(Fouled Up Beyond All Recognition)军事俚语有关。
Python 社区打破了这一传统,选择使用 spam 和 eggs 作为示例变量名。这直接来自 Monty Python 的 Spam sketch——那个著名的餐厅场景,菜单上的每道菜都含有 Spam 午餐肉,而维京人不断高唱"Spam, lovely Spam, wonderful Spam"。
2. 官方文档中的 spam/eggs
Python 官方教程《An Informal Introduction to Python》中,spam 和 eggs 频繁出现:
>>> 'spam eggs' # single quotes
'spam eggs'
这段代码出现在 Python 官方文档的字符串示例部分,教导新手如何使用单引号定义字符串。
在作用域讲解中:
def spam():
eggs = 31337
spam()
print(eggs) # 报错!eggs 未定义
这里 spam() 函数和 eggs 变量成为讲解局部作用域与全局作用域的经典示例。
3. 第三方库与文档中的致敬
Google Style Guide 的 Python 文档示例中:
class SampleClass(object):
"""Summary of class here."""
Attributes:
likes_spam: A boolean indicating if we like SPAM or not.
eggs: An integer count of the eggs we have laid.
这里 likes_spam 和 eggs 作为类属性示例,直接致敬了 Monty Python 的 Spam sketch。
python-docx 库的官方文档中,示例代码甚至包含一个名为 monty-truth.png 的图片文件:
document.add_picture('monty-truth.png', width=Inches(1.25))
records = (
(3, '101', 'Spam'),
(7, '422', 'Eggs'),
(4, '631', 'Spam, spam, eggs, and spam')
)
表格数据直接引用了 Spam sketch 中的经典台词:“Spam, spam, eggs, and spam”。
Sphinx 文档工具(Python 文档的标准生成工具)的示例中:
.. py:function:: spam(eggs)
ham(eggs)
Spam or ham the foo.
这里 spam(eggs) 和 ham(eggs) 作为函数文档示例,再次致敬了 Monty Python。
五、Cheese Shop、Eggs 与 Wheels:Python 生态的食物梗
1. Cheese Shop:PyPI 的前身
Python 包索引(Python Package Index)的前身叫做 “Cheese Shop”。这直接致敬了 Monty Python 的 Cheese Shop sketch——一个顾客走进奶酪店,发现店里没有任何奶酪,店员却不断用荒谬的理由解释为什么缺货。
这个梗完美讽刺了早期 Python 包管理的混乱状态——包索引存在,但许多包却无法安装或使用。后来 PyPI 正式建立,但"Cheese Shop"的别名在 Python 社区中流传了很久。
2. Python Eggs:打包格式
2004 年,Python 引入了一种名为 “Eggs” 的包分发格式(.egg 文件)。这是对 Monty Python Spam sketch 的又一次致敬——在餐厅场景中,"egg and spam"是菜单上的经典组合。
3. Python Wheels:延续食物传统
2010 年,Python 引入了 “Wheels” 打包格式(.whl 文件)。虽然 Wheels 本身不是直接的 Monty Python 引用,但它延续了 Python 生态中以食物命名工具的传统,从 Cheese Shop 到 Eggs 再到 Wheels,形成了一条有趣的食物链。
六、Python 社区文化中的 Monty Python 基因
1. The Zen of Python:美学与幽默
Python 社区最著名的文化文档是 The Zen of Python(Python 之禅),由 Tim Peters 撰写。其中包含:
“Beautiful is better than ugly.”
“Simple is better than complex.”
“Readability counts.”
这些不是技术指标,而是美学和情感价值。正如 Guido van Rossum 选择 Monty Python 作为命名灵感,Python 社区始终强调编程可以是一种创造性的、充满乐趣的人类活动,而非冰冷的机械过程。
2. "Batteries Included"哲学
Python 以"内置电池"(Batteries Included)著称——标准库极其丰富,开箱即用。这种"慷慨"的态度与 Monty Python 的喜剧精神一脉相承:不吝啬、不 pretentious(自命不凡),而是直接、实用、有趣。
3. PyCon 会议中的 Monty Python 引用
每年的 PyCon 全球开发者大会中,Monty Python 的引用无处不在。教程用 Monty Python 的 sketch 来解释编程概念,演讲者引用经典台词作为开场白,甚至会议 T 恤上印有 “Nobody expects the Spanish Inquisition!” 的标语。
七、Python 生态中的 Monty Python 致敬时间线
八、为什么这很重要?
1. 编程是创造性的人类活动
Python 以 Monty Python 命名这一事实,向全世界传递了一个重要信息:编程不是冰冷的数学或机械工程,而是一种创造性的、充满乐趣的人类活动。Guido van Rossum deliberately 选择了欢乐而非严肃,选择了个人爱好而非企业品牌。
2. 降低编程门槛
Python 的幽默基因降低了编程的门槛。当新手看到 spam = 1 而不是 foo = 1 时,他们感受到的是一种友好、亲切的氛围,而不是冰冷的技术壁垒。这种"去 intimidating"的文化是 Python 成为最受欢迎编程语言之一的重要原因。
3. 社区认同与归属感
Python 开发者之间有一种默契的认同感。当你看到同事写下 spam 和 eggs 时,你知道你们共享着同一种文化基因。这种"内部梗"(inside joke)增强了社区凝聚力,形成了独特的 Pythonic 身份认同。
结语
从1989年 Guido van Rossum 的圣诞假期项目,到今天全球数百万开发者手中的 Python 代码,Monty Python 的喜剧精神已经深深融入了这门语言的 DNA。每一次你写下 spam = 1,每一次你在 IDLE 中调试代码,每一次你浏览 PyPI 寻找包,你都在参与一个跨越三十多年的文化传统。
Python 不是唯一以娱乐命名的技术产品(比如 Java 以咖啡命名),但它是唯一将喜剧梗系统化、制度化地融入整个生态的主流编程语言。在这个意义上,Python 不仅仅是一门编程语言——它是 Monty Python 荒诞喜剧精神在数字时代的延续。
正如 Python 官方 FAQ 所回答的:
“Do I have to like ‘Monty Python’s Flying Circus’?”
“No, but it helps. 😃”
更多推荐




所有评论(0)