重複の可能性:
関数内の静的変数に相当する 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
方法がわかりません。デコレータは唯一の方法ですか (他に何も見つかりませんでした)? 私の変数を格納するためにカウンター関数を書く方法は?後でより複雑な再帰を使用すると、デコレータのアイデアで完全に失われるのではないかと少し心配しています。