Ich habe eine rekursive Funktion, simulation(), die einige Minuten aus dem Web einige Werte (die Werte sind die Ergebnisse des Zählens mehrerer Aktionen) abruft. Innerhalb der Funktion ist eine verschachtelte Funktion, raise_alarm, ebenfalls rekursiv, die die Werte von simulation() als Argumente verwendet und analysiert. Ich muss in der Lage sein zu erkennen, ob sich nach jedem Lauf eine Wertänderung ergeben hat.Python: Rekursive Funktion und Speichern von Variablen
Ich habe davon Abstand genommen, globale Variablen zu verwenden (weiß nicht wirklich viel über sie), während ich weiter lese, sie sollten der letzte Ausweg sein. Gibt es irgendeine Möglichkeit, einen Wert innerhalb oder außerhalb der verschachtelten Funktion zu speichern, um ihn mit seinem aktualisierten Status vergleichen zu können, sobald er angekommen ist?
Hier ist der vereinfachte Code:
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()
So ausführlich, value_a, _b ... werden die Bahn kontinuierlich abgeschabt. Jedes Mal, wenn value_b im Durchschnitt drei Mal gewachsen ist, wächst value_b ebenfalls um 1. Ich brauche eine Variable innerhalb meiner raise_alarm-Funktion, die value_a spiegelt, aber jedes Mal, wenn sich value_b ändert, auf 0 zurückgesetzt wird. Dazu möchte ich value_a in der Speichervariablen value_a_old speichern, damit ich den neuen eingehenden Wert mit dem Wert a vergleichen kann. Sowohl value_a als auch value_a_old müssen während des Kurses aktualisiert werden.
Hoffnung, wissen Sie, was ich rede, ich habe den ganzen Tag auf sie gestarrt ...
Prost, Jungs!
Ich denke, der beste Weg, dies zu tun ist, die Variablen, die Sie benötigen, z. 'value_a_old', als Parameter für' raise_alarm() '. –
'Simulation' scheint nicht rekursiv zu sein; tatsächlich, auch nicht 'raise_alarm'. –
Wo genau wiederholt sich der Ausführungsfluss? – ospahiu