可能是重复问题:
Python中函数内静态变量的等价物是什么? 我尝试编写一个递归函数。它遍历一个向量并给出一个值,该值取决于当前值和先前的值。在Matlab中,我可以在函数内声明一个变量为
这是我为简单移动平均值编写的内容:
我需要在函数调用之间记住变量
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
来实现它,但不确定该如何实现。装饰器是唯一的方法吗(没有找到其他方法)?如何编写计数器函数来存储我的变量?我有点担心后来使用更复杂的递归时,我会完全迷失在装饰器的概念中。