私は再帰関数simulate()を使用して、毎分Webからいくつかの値(いくつかのアクションを数えた結果の値)を取り出します。この関数の内部には、引数としての()の値を使用して解析する入れ子関数raise_alarm(再帰的)もあります。それぞれの実行後に価値の変化があったかどうかを検出できる必要があります。Python:再帰関数と変数の保存
私が読んでいるように、グローバル変数の使用を控えています。だから、それが到着したら、それを更新状態と比較できるように、ネストされた関数の内部または外部に値を格納できる方法はありますか?ここで
は単純化されたコードです:
def simulation():
#generates the values_a, _b...
def raise_alarm(value_a, value_b,...):
if value_a_old < value_a: ###where do I place value_a_old?)
#do stuff
else: pass
if value_b_alt < value_b:
#do stuff
else: pass
if value_a > value_b+2 or value_b > value_a+2:
#do stuff
else:
#do other stuff
while True:
print' stuff '
time.sleep(2)
raise_alarm(value_a, value_b)
simulation()
ので、詳細、value_a、_bで...連続ウェブを掻き取られています。 value_bが平均で3倍になるたびに、value_bも1増加します。私はraise_alarm-function内でvalue_aをミラーリングする変数が必要ですが、value_bが変更されるたびに0に戻されます。 これは私がストレージ変数value_a_oldにvalue_aを保存したいので、新しい着信value_aとvalue_a_oldを比較できます。 value_aとvalue_a_oldの両方がコース中に更新される必要があります。
希望、あなたは私がみんな、私は...一日中、それに
乾杯を見つめてきた、について話しているか知っています!
私はこれを行うための最良の方法は、あなたが必要とする変数を渡すことだと思います。 'value_a_old'を' raise_alarm() 'のパラメータとして返します。 –
'シミュレーション 'は再帰的ではありません。実際には、 'raise_alarm'もどちらもしません。 –
正確に実行フローが再帰していますか? – ospahiu