给定 AST,是否有一个工作库可以获取源代码?
有没有办法将给定的Python抽象语法树(AST)转换为源代码?
这里是如何使用的一个很好的示例Python 的 ast
模块,特别是 NodeTransformer
。我一直在寻找一种将生成的 AST 转换回源代码的方法,以便可以直观地检查更改。
Is there a way to convert a given Python abstract syntax tree (AST) to a source code?
Here is a good example of how to use Python's ast
module, specifically a NodeTransformer
. I was looking for a way to convert the resulting AST back to source, so the changes can be inspected visually.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
Python 源代码树包含此实现: unparse.py在Demo/parser目录
编者注:随着引入
ast.unparse()
在 Python 3.9 中,unparse.py 已被删除,因此上面的链接已更新为指向 3.8。The Python source tree contains an implementation of this: unparse.py in the Demo/parser directory
Editor's note: With the introduction of
ast.unparse()
in Python 3.9, unparse.py has been removed, so the above link has been updated to point to 3.8.从 Python 3.9 开始,ast 模块提供了一个 unparse 函数这:
As of Python 3.9, the ast module provides an unparse function for this:
我发现了一个不错的第三方库:
astunparse
,它基于关于 Ned 在他的回答中建议的unparse.py
。示例:运行它会产生
另一个简洁的函数是
astunparse.dump
,它漂亮地打印代码对象:输出:
A nice third-party library I found:
astunparse
which is based on theunparse.py
suggested by Ned in his answer. Example:running which yields
Another neat function is
astunparse.dump
which pretty-prints the code object:Output:
看看 http://pypi.python.org/pypi/sourcecodegen/0.6.14
Have a look at http://pypi.python.org/pypi/sourcecodegen/0.6.14