【发布时间】:2015-08-17 12:56:58
【问题描述】:
我一直在寻找 Python 中的静态值。
我找到了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
它在函数中使用 python 装饰器来处理静态变量。
装饰器(static_var)在返回被装饰的函数(foo)之前初始化静态值(foo.counter)。
所以我认为它不应该像预期的那样工作,因为decorator(static_var)在每次调用foo时都会初始化foo.counter。
因此,我认为如果 foo() 被调用两次,它应该打印1 两次
foo()
foo()
但它打印1 和2,增加foo.counter
为什么...?
为什么每次调用 foo 时,foo.counter 不初始化为 0?
【问题讨论】:
标签: python static-variables python-decorators