# Issue

I have a set of nested partials that I'm trying to call:

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

so when I try to run my partial I get the inner partial back:

```
print(my_partial)
functools.partial(<function f at 0x000001A047370620>,
functools.partial(<function c at 0x000001A047370400>, 5))
```

(Or sometihng like that). Anyway, so to run this to get the final transformation on `5`

(the input data), I have to do this:

```
print(my_partial()()()())
25
```

Is there a `functools`

function that I can pass this nested partials to so that it'll just run it all for me? Something like this:

```
print(functools.run_partials(my_partial))
25
```

Does something like this exist? I hope so, the soltion I'm working on is buggy:

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

# Solution

I don't think there's anything in `functools`

to help. You could always keep calling it until it's not callable anymore with a single `while`

. Something like:

```
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'
```

Answered By - Mark Answer Checked By - Clifford M. (PHPFixing Volunteer)

## 0 Comments:

## Post a Comment

Note: Only a member of this blog may post a comment.