【问题标题】:iterating through a function's sub functions python遍历函数的子函数python
【发布时间】: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 中定义的任何东西一样。它们是函数这一事实并没有什么特别之处。

标签: python function


【解决方案1】:

没有要迭代的隐式函数列表。你需要自己定义它。通过使用 lambda 表达式定义函数,可以将函数直接分配给列表;需要先定义更复杂的功能,然后再添加。每个例子:

def f(x):
    funcs = []

    def y(x):
        return x += 3
    f.append(y)

    f.append(lambda x: x**2 - 1)

    for func in funcs:
        x = func(x)
    
    
    return x

【讨论】:

    猜你喜欢
    • 2014-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-23
    • 2022-01-24
    • 2017-01-18
    • 2021-12-02
    • 2021-06-18
    相关资源
    最近更新 更多