Python create partial functions in runtime
It can be done manually:
examples/python/generate_partials.py
from functools import partial def full(number, name): print(f"{name} {number}") foo = partial(full, name='FOO') foo(17)
but sometimes you'd like to do that on-the fly with a number of different values of the same parameter.
It can be done using exec:
examples/python/generate_partials_on_the_fly_with_exec.py
from functools import partial def full(number, name): print(f"{name} {number}") names = ["foo"] for name in names: exec(f'{name} = partial(full, name="{name.upper()}")') foo(17)
but there is a better way to do it using locals.
manually:
examples/python/generate_partials_using_locals.py
from functools import partial def full(number, name): print(f"{name} {number}") locals()["foo"] = partial(full, name='Foo') foo(17)
on-the fly to many values:
examples/python/generate_partials_on_the_fly_with_locals.py
from functools import partial def full(number, name): print(f"{name} {number}") names = ["foo"] for name in names: locals()[name] = partial(full, name=name.upper()) foo(17)
Published on 2021-09-29