import ast
def find_parent(par):
for par_node in mod.body:
if isinstance(par_node, ast.FunctionDef):
for node in par_node.body:
if isinstance(node, ast.FunctionDef) and node.name == inner_func.func_name:
return eval(par_node.name)
输出:
n [12]: from test import *
In [13]: mod = ast.parse(open("/home/padraic/test.py").read())
In [14]: find_parent(mod)
Out[14]: <function test.foo>
In [15]: find_parent(mod).func_name
Out[15]: 'foo'
这只会在另一个函数体中找到FunctionDef:
测试.py:
代码:
输出:
这还远远不够完美,但有个主意:
getattr(__import__(foo().__module__), 'foo')
其中名称
'foo'
可以根据@zondo的注释以某种方式获得。你知道吗相关问题 更多 >
编程相关推荐