在python中将函数调用与嵌套的可调用参数进行比较

时间:2014-06-11 10:29:47

标签: python abstract-syntax-tree

我正在尝试使用AST比较两个函数调用。我有一个ast.NodeVisitor实现,它将返回一个函数名为(_Call.func.attr)的字典,参数列表(_Call.args),关键字参数(_Call.keywords)等。

我遇到了具有嵌套可调参数的调用问题。例如:

functionA(arg_1, callable_arg_1(callable_arg(somearg)), arg_2, arg_3)

如何在这种情况下制作独特的签名?我应该有灵活性来检查和比较任何级别的任何论点。

编辑:评论中的格式化代码,缺少上下文 -

def visit_Call(self, obj):
    self._name =  obj.func.attr
    self._kwargs = obj.kwargs.id
    self._starargs = obj.starargs.id
    for arg in obj.args:
        self._arg_list.append(arg.id)
    for kw in obj.keywords:
        self._keyword_list.append((kw.arg, kw.value.id))

0 个答案:

没有答案