可能重复:
函数中静态变量的 Python 等价物是什么?
我尝试编写一个递归函数。它遍历一个向量并给出一个取决于当前值和先前值的值。在 Matlab 中,我可以persistent
在函数内部声明一个变量,并在调用函数后将值存储在内存中,因此函数的下一次调用从以前的值开始。
这就是我开始的简单移动平均线:
def AvgFilter(x):
if not firstRun: # checks if runs for first time, i.e. firstRun is empty
k = 1 # setup initial variables if run for first time
prevAvg = 0 # prevAvg - the average calculated during last call
firstRun = 1 # only for initialisation
alpha = (k-1)/k
avg = alpha * prevAvg + (1 - alpha)*x
prevAvg = avg
k = k + 1
return avg
我需要k
prevAvg
firstRun
在函数调用之间记住变量。我读到它可以通过装饰器完成,我确实尝试@counter
在函数之前实现它设置,但不确定我应该如何实现它。装饰器是唯一的方法(没有找到其他东西)?以及如何编写计数器函数来存储我的变量?我有点担心,以后有更复杂的递归我会完全迷失在装饰器的想法上。