你有没有遇到过这种情况:代码明明能跑,但你就是搞不明白 Python 到底是怎么"读"你写的这串东西的?
比如你写了一个套了好几层的 f-string,或者一个长得离谱的推导式,运行结果对是对了,可你心里没底——这个变量名到底被当成了什么?那个运算符先算还是后算?
这时候稍微有点经验的人会跟你说:去看看 ast 啊。
ast 是 Python 的"抽象语法树"。简单说,Python 在真正运行你的代码之前,会先在脑子里把代码拆成一棵"树"——哪句是赋值、哪句是调用、哪个是字符串、哪个是名字,全都清清楚楚。看懂这棵树,你就看懂了 Python 是怎么理解你的代码的。
可问题来了:过去你让 Python 把这棵树打印出来,它吐给你的,是...