Appearance
《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 *