我有一個遞歸函數simulation(),它每隔一分鐘左右就會從網絡中提取一些值(這些值是計數幾個動作的結果)。函數內部是一個嵌套函數raise_alarm,它也是遞歸的,它使用來自simulation()的值作爲參數並分析它們。我需要能夠檢測每次運行後價值是否有變化。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函數中,它是鏡像value_a,但是每次value_b變化時它都會被設置回0。 爲此,我想將value_a存儲在存儲變量value_a_old中,因此我可以將新傳入的value_a與value_a_old進行比較。需要在課程中更新value_a和value_a_old。
希望,你知道我在說什麼,我一直在一整天盯着...
乾杯,夥計們!
我認爲最好的辦法是傳遞你需要的變量,例如'value_a_old',作爲'raise_alarm()'的參數。 –
'simulation'似乎不是遞歸的;實際上,'raise_alarm'也不是。 –
執行流程遞歸究竟在哪裏? – ospahiu