在 C/C 中,函数可以声明静态变量来维护函数调用之间的状态。另一方面,Python 默认情况下不支持函数内的静态变量。
要复制 Python 函数内静态变量的行为,请使用以下命令方法:
<br>def foo():<pre class="brush:php;toolbar:false">if not hasattr(foo, "counter"): foo.counter = 0 foo.counter += 1 print("Counter is", foo.counter)
这里,我们检查函数内是否存在“counter”属性。如果不存在,我们将其初始化为 0。此初始化代码在第一个函数调用开始时执行。
为了增强可读性,将初始化代码移至顶部,可以使用装饰器:
<br>def static_vars(**kwargs):<pre class="brush:php;toolbar:false">def decorate(func): for k in kwargs: setattr(func, k, kwargs[k]) return func return decorate
@static_vars(counter=0)
def foo():
foo.counter += 1 print("Counter is", foo.counter)
放置函数在类内部不会改变静态变量的实现。静态变量仍然是特定于函数的,而不是特定于类的。
以上是如何在 Python 函数中模拟静态变量?的详细内容。更多信息请关注PHP中文网其他相关文章!