def get_vars(node):
vv = VarsVisitor()
if isinstance(node.ast_node, ast.While)\
or isinstance(node.ast_node, ast.If):
vv.visit(node.ast_node.test)
elif isinstance(node.ast_node, ast.FunctionDef) or\
isinstance(node.ast_node, ast.ClassDef):
return list()
else:
try:
vv.visit(node.ast_node)
except AttributeError: # If no ast_node
vv.result = list()
# remove duplicates:
vv.result = set(vv.result)
# Filter out lvars:
for var in vv.result:
try: # if assignment node
# print('r', node.right_hand_side_variables)
# if var not in node.left_hand_side:
if var in node.right_hand_side_variables:
yield var
except AttributeError:
yield var
评论列表
文章目录