问题:
Python 如何在函数内实现静态变量,类似于 C/C ' s 在函数中定义的静态成员变量level?
答案:
在 Python 中,函数内的静态变量没有直接等价物。然而,使用嵌套函数和闭包的组合可以实现类似的功能:
def foo(): def counter(): if not hasattr(foo, "counter_value"): foo.counter_value = 0 foo.counter_value += 1 return foo.counter_value return counter
这里,函数 foo() 定义了一个嵌套函数 counter()。外部函数 foo() 充当 counter() 的闭包,为其提供隔离的命名空间。
要访问并递增计数器,您可以调用:
counter = foo() counter() # Initializes the counter counter() # Increments the counter
装饰器方法:
另一种方法是使用装饰器创建静态变量:
def static_vars(**kwargs): 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 return foo.counter
这种语法可以让你更方便地初始化和访问静态变量,但需要使用 foo.variable 。前缀。
以上是如何在 Python 中模拟静态函数变量?的详细内容。更多信息请关注PHP中文网其他相关文章!