Python ast.NodeTransformer用法及代碼示例- 純淨天空
文章推薦指數: 80 %
用法: class ast.NodeTransformer. NodeVisitor 子類遍曆抽象語法樹並允許修改節點。
NodeTransformer 將遍曆AST 並使用訪問者方法的返回值來替換或刪除舊節點。
當前位置:首頁>>代碼示例
>>用法及示例精選
>>正文
用法:classast.NodeTransformer
NodeVisitor子類遍曆抽象語法樹並允許修改節點。
NodeTransformer將遍曆AST並使用訪問者方法的返回值來替換或刪除舊節點。
如果訪問者方法的返回值為None,則將節點從其位置移除,否則將其替換為返回值。
返回值可能是原始節點,在這種情況下不會發生替換。
這是一個示例轉換器,它將所有出現的名稱查找(foo)重寫為data['foo']:
classRewriteName(NodeTransformer):
defvisit_Name(self,node):
returnSubscript(
value=Name(id='data',ctx=Load()),
slice=Constant(value=node.id),
ctx=node.ctx
)
請記住,如果您正在操作的節點有子節點,您必須自己轉換子節點或首先為節點調用generic_visit()方法。
對於作為語句集合一部分的節點(適用於所有語句節點),訪問者還可以返回節點列表而不僅僅是單個節點。
如果NodeTransformer引入新節點(不屬於原始樹的一部分)但未提供位置信息(例如lineno),則應使用新的sub-tree調用fix_missing_locations()以重新計算位置信息:
tree=ast.parse('foo',mode='eval')
new_tree=fix_missing_locations(RewriteName().visit(tree))
通常你像這樣使用轉換器:
node=YourTransformer().visit(node)
相關用法
Pythonast.NamedExpr用法及代碼示例
Pythonast.MatchClass用法及代碼示例
Pythonast.ListComp用法及代碼示例
Pythonast.Lambda用法及代碼示例
Pythonast.IfExp用法及代碼示例
Pythonast.Return用法及代碼示例
Pythonast.Subscript用法及代碼示例
Pythonast.alias用法及代碼示例
Pythonast.Slice用法及代碼示例
Pythonast.MatchAs用法及代碼示例
Pythonast.Try用法及代碼示例
Pythonast.MatchValue用法及代碼示例
Pythonast.Assert用法及代碼示例
Pythonast.Break用法及代碼示例
Pythonast.Load用法及代碼示例
Pythonast.Set用法及代碼示例
Pythonast.MatchStar用法及代碼示例
Pythonast.Expr用法及代碼示例
Pythonast.Attribute用法及代碼示例
Pythonast.ImportFrom用法及代碼示例
注:本文由純淨天空篩選整理自python.org大神的英文原創作品 ast.NodeTransformer。
非經特殊聲明,原始代碼版權歸原作者所有,本譯文的傳播和使用請遵循“署名-相同方式共享4.0國際(CCBY-SA4.0)”協議。
延伸文章資訊
- 1python ast用法 - 掘金
python ast用法技术、学习、经验文章掘金开发者社区搜索结果。掘金是一个帮助开发者成长的社区,python ast用法技术文章由稀土上聚集的技术大牛和极客共同编辑为你筛选 ...
- 2AST 模块:用Python 修改Python 代码 - PyCoder's Weekly ...
在这篇文章中,我们将看到如何使用 ast 模块对Python 代码进行修改,同时还将看到一些使用了这个技术的工具。 CPython 的编译过程¶. http://pyimg.fanhe.org/...
- 3Python ast.NodeTransformer用法及代碼示例- 純淨天空
用法: class ast.NodeTransformer. NodeVisitor 子類遍曆抽象語法樹並允許修改節點。 NodeTransformer 將遍曆AST 並使用訪問者方法的返回值來...
- 4ast --- 抽象语法树— Python 3.8.13 說明文件
ast 模块帮助Python 程序处理Python 语法的抽象语法树。抽象语法或许会随着Python 的更新发布而改变;该模块能够帮助理解当前语法在编程层面的样貌。
- 5Python Ast介绍及应用 - 博客园
Ast是python源码到字节码的一种中间产物,借助ast模块可以从语法树的角度分析源码结构。此外,我们不仅可以修改和执行语法树,还可以将Source生成的语法树 ...