我试图提取代码中没有缩进的所有变量,下面是一个简单的示例:
import ast
import astunparse
class AnalysisNodeVisitor(ast.NodeVisitor):
def __init__(self, nodename):
super().__init__()
self.nodename=nodename
self.setVariables={}
def visit_Assign(self,node):
print(self.nodename,astunparse.unparse(node.targets))
#print(ast.dump(node))
Analyzer=AnalysisNodeVisitor("example1")
tree=ast.parse('''\
a = 10
for i in range(10):
b=x+i
if(x==10):
c=36
d=20
''')
Analyzer.visit(tree)
example1 a
example1 b
example1 c
example1 d
这个例子打印出了所有4个变量(a、b、c和d),我想知道是否有一种方法可以让它只打印赋值a、d,因为赋值前没有缩进
我试图转储节点,看看是否有可以用来过滤变量的东西,但我找不到任何东西(例如,它只是输出这样一个:“Assign(targets=[Name(id='a',ctx=Store())],value=Num(n=10))”
我想如果你只看一下
tree.body
,你就能找到你所有的顶级赋值语句运行此代码:
产生:
相关问题 更多 >
编程相关推荐