Python is often claimed not to have closures but that isn't really true, what it doesn't have is anonymous functions. It does have a lambda statement, but that is limited to a single statement.
So what you end up writing is more akin to:
def multiplier_maker(a):
def temp(b):
return b * a
return temp
That is because Python allows you to declare a function anyware, even inside other functions.
You can do it by closing over a variable as well. Python closes over things just fine, it just has problems rebinding variables in outer scopes that aren't the global one. Here, I just make the variable a container, so I can alter a value inside it, instead of rebinding it ( only python2 has this problem, python3 has a "nonlocal" keyword to work around this in the language )
So what you end up writing is more akin to:
That is because Python allows you to declare a function anyware, even inside other functions.