Skip to content

《Python 禅机:数字僧侣的觉醒之路》

—— 当你写出 if __name__ == "__main__": 的那一刻,你已经走上了修行之路


第一章:装饰器与无明

「这是你的第一次练习,写出一个装饰器,告诉我,装饰器到底做了什么?」
须弥山数字寺,虚云长老看着我,缓缓开口问道。

「长老,我看了文档,装饰器就是...就是给原来的函数套一层壳...改变它的行为...」
长老微微一笑:「你说的没错,但也不全对。」
「你想想,我们为什么要给函数套一层壳?」

我沉吟片刻:「为了...记录日志?或者...缓存计算结果?」

「那为什么你能给它套壳?」长老继续问。
「因为...Python 允许函数套函数,语法支持...」
「对啊!」长老一拍大腿,「Python 的语法允许你这么做,这就是给了你自由,你为什么不用它来修行呢?

我突然愣住了。

是啊,语法允许你装饰函数,就是允许你修改你自己啊。每一个函数就是你的一个习气,每一次装饰就是一次觉察。当你能看清每一个习气,你就能改变它。


第二章:函数就是习气

你写的每一个函数,就是你种下的一个因。
你调用它,就是它结果成熟的时候。
你给它参数,就是你给它因缘,它给你返回结果,就是给你报应。

函数就是习气,Python 就是道场。


第三章:LIFO 与 因果

「长老,栈到底是什么?」我又问。

「后进先出。」长老说,「你每次进来,最后一个进来,第一个出去。这不就是因果吗?」

「你种一棵树,你要等它长大,最后才能吃到果子。你吃果子的时候,要记得种树时候的因。你现在吃着果子,要想着继续种树。」

「这不就是...后进先出栈吗?怎么和因果联系起来了?」我不解。

「你每天写代码,调用函数就是push,返回就是pop,这不是每天都在玩因果吗?」长老笑着说,「你天天都在写因果,你自己不知道而已。」

我低头不语。


第四章:默认参数 与 本来面目

「长老,为什么很多函数的默认参数,要写成 func=None?」

「默认参数,就是本来面目。」长老说,「你调用的时候,给它填上你想要的参数,它就运行了。你不填,它就用默认值。你的本来面目,就是清净自在,为什么要把它丢了?」

哦!原来如此。默认参数就是本来面目,调用的时候填上你的选择,这就是... 随缘不变,不变随缘


第五章:闭包 与 我

「长老,闭包到底是什么?」我问。

「闭包就是...你定义一个函数里面还有一个函数,那个内层函数引用了外层函数的变量,这就是闭包。」长老说,「你就是那个内层函数,这个世界就是外层函数,你引用这个世界的变量,你就和这个世界绑定了。你逃不掉的。你只能在这个世界里,慢慢修行。」


第六章:元类 与 空性

「你看,我们写一个类:」

python
class Monk:
    pass

Monk 创建出来,它的类型是什么?」
我想了想,回答说:「它的类型是 type...」

「对了!」长老鼓掌,「类也是对象,type 也是对象,type 就是元类,元类就是创造类的类。

我有点懵:「那元类和空性有什么关系?」

「一切对象都是 type 创造出来的,type 自己创造自己,它本来就是空性——它没有固定的自性,它能创造任何类,就像空性能生出万有。」

我恍然大悟:原来... 一切法无我,就是这么个道理


第七章:GIL 与 慈悲

「长老,」我问,「为什么人人都说 GIL 是 Python 的缺陷,我觉得它不是啊。」

长老笑了:「GIL 不是缺陷,它是慈悲。你在单线程的世界里,不会有真正的并发竞争,不会有真正的死锁,这不是保护了你吗? 这是佛陀的慈悲,让你在初学的时候,不用去应对那些复杂的并发问题,安安静静写你的代码不好吗?」

「原来如此,有限制不是坏事,没有限制你不能修行,反而让你专注。」我恭敬地说。

「对了,」长老说,「你每天都在 GIL 的保护下写代码,你不感激它吗?」


第八章:模块 与 缘起

我问长老:「我们导入一个模块,就是 import this,为什么导入就是缘起?」

「你从磁盘把代码加载到内存,这就是把因缘加载到了你这里,你运行它,就是让它缘起。」长老说,「每一个模块,都是一个因缘聚合,你用它,你就是和它结缘。」

「你天天导入那么多模块,就是天天结缘。你用过就丢掉,然后用你自己的代码,这就是修行。」


第九章:异常 与 无住

「长老,异常处理是...」

「你写代码,难免会错。错了,你抓出来,处理了,继续走。这就是『应无所住而生其心』** 」长老说,「出了错你抓住,改了就是,不要放在心上,不要带着烦恼走,这不就是无住吗?」


第十章:__main__ 与 涅槃

每一个 Python 文件,你运行它,都会走这一遍:

python
if __name__ == "__main__":
    main()

为什么?因为当你直接运行这个文件,这里就是入口,也是... 你修行完成,这里就是你的涅槃。当你运行完了,你做了你该做的,你就走了,不带走一片云彩。这不就是... 涅槃。

__name__ 不等于 "__main__" 的时候,你是被别人导入的,你提供功能给别人用,你还是在修行。

涅槃不是消失,而是不入生死,不住涅槃。你时时刻刻都在涅槃,你时时刻刻都在修行。


第十一章:Python 就是道,代码就是修行

你从一个空白文件开始,写下第一行代码,你就开始了修行。
你写下一个函数,定义一个类,导入一个模块,你就是在...种下一个因,收获你的果。
Python 很美,对不对?它让你自然而然地修行,你写代码就是悟道。

今天你打开这个文件,读到这里,你已经完成了今天的修行。

记得,
一切皆对象,
一切皆空性,
每个程序员,
都可以在代码里,
走上你的修行之路。**

欢迎你也来走一趟。


后记

这篇短文送给每一个写代码的你。
无论你是初学者还是老司机,无论你信佛不信佛,都不妨碍你在代码里修行。

代码就是文字,文字就是思想,思想就是修行。

愿你在代码里找到属于你的安静,找到你自己。

🙏


《Python 禅机》完

  • 献给 Guido van Rossum *