5 ms·
And if you want to emulate static variables in a function, you can do that: def counter(): counter.x += 1 return counter.x counter.x =
by sebleblanc 12y ago
And if you want to emulate static variables in a function, you can do that:
def counter():
counter.x += 1
return counter.x
counter.x = 0
counter()
> 1
counter()
> 2
Beware! singleton variables, mutable state, etc.
- knome 12y agoYou 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 >>>