2 ms·
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
by knome 12y ago
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 )
>>> 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
>>>