读取/重写/编写Python ASTs
项目描述
astor旨在通过AST轻松操作Python源代码。
有一些其他类似库,但astor专注于以下领域
将AST(抽象语法树)来回转换成Python [1]
修改后的AST不需要行号、上下文等信息,否则可以直接编译,以实现来回转换。
生成的代码易于阅读,就像代码一样。
可以使用astor.rtrip工具来回转换两个不同的源代码树,以比较功能差异(例如,在PEP8编辑后)。
输出AST的格式化打印
比来回转换后的代码更难阅读,但更能准确地了解发生了什么。
比内置AST模块的输出更容易阅读。
非递归树遍历
有时你可能需要一个递归的树遍历(astor支持从树的任何节点开始),但有时你不需要这样做。astor不需要你明确访问子节点,除非你想这样做。
你可以在访问节点子节点之前添加代码,以及/或者
你可以在访问节点子节点之后添加代码,以及/或者
你可以在执行代码的同时阻止节点子节点的访问(并且可以选择通过递归调用自己来访问它们)
编写基于对象名称和/或属性名称访问树的函数
享受轻松访问父节点进行树重写的功能