Which popular language nowadays doesn't have closures? Even the so hated (by HN) PHP has had that for many years already.
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. def counter():
counter.x += 1
return counter.x
counter.x = 0
counter()
> 1
counter()
> 2
Beware! singleton variables, mutable state, etc. >>> def counter():
... x = [ 1 ]
... def count():
... y = x[ 0 ]
... x[ 0 ] += 1
... return y
... return count
...
>>> count = counter()
>>> count()
1
>>> count()
2
>>> count()
3
>>> count()
4
>>>
>>> otherCount = counter()
>>> otherCount()
1
>>> otherCount()
2
>>> count()
5
>>> count()
6
>>> otherCount()
3
>>>If it's not anonymous it's not a closure though.