from inspect import signature
from functools import partial # works like a factory to create new functions.
def _inner(i): # your constant function
return i
def outer(n):
res = []
for i in range(n):
res.append(partial(_inner, i=i)) # partial fixes the current value for the function
return res
for f in outer(3):
print(signature(f), f())
ZnJvbSBpbnNwZWN0IGltcG9ydCBzaWduYXR1cmUKZnJvbSBmdW5jdG9vbHMgaW1wb3J0IHBhcnRpYWwgIyB3b3JrcyBsaWtlIGEgZmFjdG9yeSB0byBjcmVhdGUgbmV3IGZ1bmN0aW9ucy4KCmRlZiBfaW5uZXIoaSk6ICMgeW91ciBjb25zdGFudCBmdW5jdGlvbgogICByZXR1cm4gaQoKZGVmIG91dGVyKG4pOgogICAgcmVzID0gW10KICAgIGZvciBpIGluIHJhbmdlKG4pOgogICAgICAgIHJlcy5hcHBlbmQocGFydGlhbChfaW5uZXIsIGk9aSkpICMgcGFydGlhbCBmaXhlcyB0aGUgY3VycmVudCB2YWx1ZSBmb3IgdGhlIGZ1bmN0aW9uCiAgICByZXR1cm4gcmVzCgpmb3IgZiBpbiBvdXRlcigzKToKICAgIHByaW50KHNpZ25hdHVyZShmKSwgZigpKQ==