Eine Klasse kann hier besser passen (und ist normalerweise besser für alles geeignet, was "Staat" betrifft):
%Vor%Nicht sicher, ob Sie das suchen, aber Python hat Generatorfunktionen, die keinen Wert per se zurückgeben, sondern ein Generatorobjekt, das jedes Mal einen neuen Wert erzeugt
%Vor%Verwendung:
%Vor%Hier finden Sie weitere Erläuterungen zu yield : < br> Was bewirkt das Schlüsselwort "yield" in Python?
Hier ist eine Möglichkeit, eine Schließung in Python zu implementieren:
%Vor%Ich habe dieses Beispiel wortwörtlich aus einem Python-Mailinglisten-Beitrag ausgeliehen.
Ja, obwohl Sie Ihre globale Variable zuerst deklarieren müssen, bevor sie in foo
gefunden wird:
EDIT: Als Reaktion auf den Kommentar stimmt es, dass Python keine statischen Variablen innerhalb einer Funktion hat. Beachten Sie, dass x
in diesem Beispiel nur für den Rest des Moduls als global verfügbar gemacht wird. Angenommen, der obige Code ist in test.py
. Angenommen, Sie schreiben das folgende Modul:
Die Ausgabe ist nur 1
und 2
, nicht 101
und 102
.
Nicht dass ich das empfehle, aber nur zum Spaß:
%Vor%Dies funktioniert wegen der Weg veränderlichen Standardargumente , die in Python funktionieren.
Sie könnten auch etwas wie
verwenden %Vor%um eine globale Var zu vermeiden. Diese Frage wurde von diesem Link gestellt.