exalt provides a convenient way to dynamically create closures and bind them to a custom namespace. This is primarily useful for preserving an execution-context when calling into a different function.
from exalt import promote def baz(): return bar def foo(): bar = "baz" return promote(baz, **locals())() print(foo())
pip3 install --user exalt
exalt heavily relies on CPython implementation details and probably shouldn't be used in a production environment.