gpt4 book ai didi

python - `_ast` 中导入函数的名称

转载 作者:太空宇宙 更新时间:2023-11-03 19:07:19 24 4
gpt4 key购买 nike

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

import somemod
def foo():
somemod.bar()

当我使用 root = compile(open('codefile.py').read(), 'codefile.py', 'exec', _ast.PyCF_ONLY_AST) 获取此文件的 ast 时,我可以调用somemod.bar像这样:

root.body[1].body[0]

这是一个_ast.Expr节点。
然后我期望能够得到 somemod.bar通过查看这个节点。然而,当我查看root.body[1].body[0].value.func.value.id时,我得到somemod 。据我所知,我找不到获取 bar 的方法或somemod.bar

我错过了什么?我怎样才能找到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'

关于python - `_ast` 中导入函数的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14363158/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com