Python ast.NodeTransformer用法及代碼示例- 純淨天空

文章推薦指數: 80 %
投票人數:10人

用法: 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)”協議。



請為這篇文章評分?