【发布时间】:2022-06-13 21:37:06
【问题描述】:
目标是尝试访问任何函数的子函数。我环顾四周,我不太确定有没有办法做到这一点。当我尝试使用时
functions = [name for name, obj in inspect.getmembers(sys.modules[__name__], inspect.isfunction)]
返回某个模块中的函数(在上面的__name__==__main__中)。当我使用该方法时,它不会返回任何子函数。但是我想访问看起来像
def f(x):
def y(x):
return x += 3
def z(x):
return x**2 - 1
x += y(x)
x += z(x)
return x
所以在我看来应该有某种方法可以使用f 的魔术方法或f 的某些属性来访问它们。我很难相信这些子函数没有存储为f 的某些属性,但我不知道。
最后,我需要做的是遍历某个函数的子函数,所以我认为解决方案看起来像
for subfunc in f.__method_that_returns_subfuncs__():
if 'my_string' == subfunc.__name__:
out = subfunc(args)
我只需要将字符串与子函数名称进行比较,然后调用该子函数。
谢谢
【问题讨论】:
-
函数被简单地绑定到局部变量,就像你在
f中定义的任何东西一样。它们是函数这一事实并没有什么特别之处。