跳转到主要内容

读取/重写/编写Python ASTs

项目描述

PyPI:

https://pypi.ac.cn/project/astor/

文档:

https://astor.readthedocs.io

源码:

https://github.com/berkerpeksag/astor

许可证:

3-clause BSD

构建状态:
Travis CI

astor旨在通过AST轻松操作Python源代码。

有一些其他类似库,但astor专注于以下领域

  • 将AST(抽象语法树)来回转换成Python [1]

    • 修改后的AST不需要行号、上下文等信息,否则可以直接编译,以实现来回转换。

    • 生成的代码易于阅读,就像代码一样。

    • 可以使用astor.rtrip工具来回转换两个不同的源代码树,以比较功能差异(例如,在PEP8编辑后)。

  • 输出AST的格式化打印

    • 比来回转换后的代码更难阅读,但更能准确地了解发生了什么。

    • 比内置AST模块的输出更容易阅读。

  • 非递归树遍历

    • 有时你可能需要一个递归的树遍历(astor支持从树的任何节点开始),但有时你不需要这样做。astor不需要你明确访问子节点,除非你想这样做。

    • 你可以在访问节点子节点之前添加代码,以及/或者

    • 你可以在访问节点子节点之后添加代码,以及/或者

    • 你可以在执行代码的同时阻止节点子节点的访问(并且可以选择通过递归调用自己来访问它们)

    • 编写基于对象名称和/或属性名称访问树的函数

    • 享受轻松访问父节点进行树重写的功能

由以下支持