我正在尝试使用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))