如何运行嵌套部分

2024-06-16 11:01:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一组嵌套的部分,我试图调用:

print(my_partial)

functools.partial(<function g at 0x000001A047370598>,
    functools.partial(<function f at 0x000001A047370620>, 
        functools.partial(<function c at 0x000001A047370400>, 5)))

所以当我试着运行我的部分时,我得到了内部部分:

^{pr2}$

(或类似的东西)。总之,要运行这个来获得5(输入数据)的最终转换,我必须这样做:

print(my_partial()()()())

25

有没有一个functools函数,我可以把这个嵌套的部分传递给它,这样它就可以为我全部运行了?像这样:

print(functools.run_partials(my_partial))

25

像这样的东西存在吗?希望如此,我正在研究的解决方案是小车:

def run_nested(x):
    print(str(type(x())))
    if 'functools.partial' in str(type(x())):
        run_nested(x())
    print('DONE!', x())
    return x()

Tags: 数据函数runmytypefunction解决方案partial
1条回答
网友
1楼 · 发布于 2024-06-16 11:01:02

我不认为functools中有什么可以帮助的。您可以一直调用它,直到不能再使用单个while调用它。比如:

from functools import  partial

def f(fn):
    return fn

def g(fn):
    return fn

def c(n):
    return n*n

my_f = partial(g, partial(f, partial(c, 5) ))

print(my_f())
# functools.partial(<function f at 0x10eb7cd08>, functools.partial(<function c at 0x10eb7c598>, 5))

res = my_f
while(callable(res)):
    res = res()
print(res) # '25'

相关问题 更多 >