Python `\u ast中导入的函数的名称`

Python `\u ast中导入的函数的名称`,python,import,abstract-syntax-tree,Python,Import,Abstract Syntax Tree,我正在使用\u ast进行一些代码分析,在获取导入函数的名称时遇到了问题。 假设我的代码文件(code.py)如下所示: import somemod def foo(): somemod.bar() root.body[1].body[0] 当我使用root=compile(open('codefile.py').read(),'codefile.py','exec',_ast.PyCF_ONLY_ast)获取此文件的ast时,我可以得到调用somemod.bar的行,如下所示:

我正在使用
\u ast
进行一些代码分析,在获取导入函数的名称时遇到了问题。
假设我的代码文件(
code.py
)如下所示:

import somemod
def foo():
    somemod.bar()
root.body[1].body[0]
当我使用
root=compile(open('codefile.py').read(),'codefile.py','exec',_ast.PyCF_ONLY_ast)
获取此文件的ast时,我可以得到调用
somemod.bar
的行,如下所示:

import somemod
def foo():
    somemod.bar()
root.body[1].body[0]
这是一个
\u ast.Expr
节点。
然后,我希望通过查看此节点可以获得
somemod.bar
。但是,当我查看
root.body[1].body[0].value.func.value.id时,我得到了
somemod
。据我所知,我找不到一种方法来获取
bar
somemod.bar


我错过了什么?如何到达
栏?

它位于
value.func.attr
中:

>>> root = compile(open('codefile.py').read(), 'codefile.py', 'exec', _ast.PyCF_ONLY_AST)
>>> root.body[1].body[0].value.func
<_ast.Attribute object at 0x9703acc>
>>> f = root.body[1].body[0].value.func
>>> vars(f)
{'col_offset': 4, 'ctx': <_ast.Load object at 0xb6e2c6cc>, 'attr': 'bar', 'value': <_ast.Name object at 0x9703a8c>, 'lineno': 3}
>>> f.attr
'bar'
>>> f.value.id
'somemod'
>>root=compile(打开('codefile.py').read(),'codefile.py','exec','u ast.PyCF\u ONLY\u ast)
>>>root.body[1]。body[0]。value.func
>>>f=root.body[1]。body[0]。value.func
>>>vars(f)
{'col_offset':4,'ctx':,'attr':'bar','value':,'lineno':3}
>>>f.attr
“酒吧”
>>>f.value.id
“somemod”

它位于
value.func.attr
中:

>>> root = compile(open('codefile.py').read(), 'codefile.py', 'exec', _ast.PyCF_ONLY_AST)
>>> root.body[1].body[0].value.func
<_ast.Attribute object at 0x9703acc>
>>> f = root.body[1].body[0].value.func
>>> vars(f)
{'col_offset': 4, 'ctx': <_ast.Load object at 0xb6e2c6cc>, 'attr': 'bar', 'value': <_ast.Name object at 0x9703a8c>, 'lineno': 3}
>>> f.attr
'bar'
>>> f.value.id
'somemod'
>>root=compile(打开('codefile.py').read(),'codefile.py','exec','u ast.PyCF\u ONLY\u ast)
>>>root.body[1]。body[0]。value.func
>>>f=root.body[1]。body[0]。value.func
>>>vars(f)
{'col_offset':4,'ctx':,'attr':'bar','value':,'lineno':3}
>>>f.attr
“酒吧”
>>>f.value.id
“somemod”

啊!非常感谢你。这让我发疯。PS:谢谢
vars
(以前不知道)啊!非常感谢你。这让我发疯。PS:谢谢
vars
(以前不知道)