小编MMM*_*MMM的帖子

使用 AST 模块来改变和删除赋值/函数调用

例如,如果我想将大于更改为小于或等于,我已成功执行:

def visit_Gt(self, node):
    new_node = ast.GtE()
    return ast.copy_location(new_node, node)
Run Code Online (Sandbox Code Playgroud)

我如何访问/检测赋值操作(=)和函数调用()并简单地删除它们?我正在阅读 AST 文档,但找不到访问赋值或函数调用类然后不返回任何内容的方法。

我正在寻找的赋值操作的一个例子:

print("Start")
x = 5
print("End")
Run Code Online (Sandbox Code Playgroud)

变成:

print("Start")

print("End")
Run Code Online (Sandbox Code Playgroud)

我正在寻找删除函数调用的示例:

 print("Start")
 my_function_call(Args)
 print("End")
Run Code Online (Sandbox Code Playgroud)

成为

print("Start")

print("End")
Run Code Online (Sandbox Code Playgroud)

python abstract-syntax-tree mutation

3
推荐指数
1
解决办法
3511
查看次数

标签 统计

abstract-syntax-tree ×1

mutation ×1

python ×1