如何 运行 嵌套部分
how to run nested partials
我有一组要调用的嵌套部分:
print(my_partial)
functools.partial(<function g at 0x000001A047370598>,
functools.partial(<function f at 0x000001A047370620>,
functools.partial(<function c at 0x000001A047370400>, 5)))
所以当我尝试 运行 我的部分时,我得到了内部部分:
print(my_partial)
functools.partial(<function f at 0x000001A047370620>,
functools.partial(<function c at 0x000001A047370400>, 5))
(或类似的东西)。无论如何,为了 运行 得到对 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()
我认为 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'
我有一组要调用的嵌套部分:
print(my_partial)
functools.partial(<function g at 0x000001A047370598>,
functools.partial(<function f at 0x000001A047370620>,
functools.partial(<function c at 0x000001A047370400>, 5)))
所以当我尝试 运行 我的部分时,我得到了内部部分:
print(my_partial)
functools.partial(<function f at 0x000001A047370620>,
functools.partial(<function c at 0x000001A047370400>, 5))
(或类似的东西)。无论如何,为了 运行 得到对 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()
我认为 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'