I was looking for about static value in Python.
And I found this.
def static_var(varname, value):
def decorate(func):
setattr(func, varname, value)
return func
return decorate
@static_var("counter", 0)
def foo():
foo.counter += 1
print "Counter is %d" % foo.counter
It is using python decorator for static variable in a function.
The decorator(static_var)
initialize static value(foo.counter)
before returning the function(foo)
decorated.
So I think it should not work as expected, because decorator(static_var)
initialize foo.counter
every time when foo
is called.
As a result, I think if foo() is called two times, it should print 1
two times
foo()
foo()
But It prints 1
and 2
, increasing foo.counter
Why...?
Why isn't foo.counter
initialized to 0
every time when foo is called?