Ich versuche, eine Python-Funktion zu schreiben, die beim ersten Aufruf eine 1 zurückgibt. Beim zweiten Aufruf wird eine 2 zurückgegeben. Bei der dritten, einer 3. usw.
Gegenwärtig habe ich dies mit einer globalen Variable erreicht:
%Vor%Beim dreimaligen Aufruf der Funktion:
%Vor%Es gibt die erwarteten Werte zurück:
%Vor%Aber ich habe gelesen, dass es eine schlechte Übung ist, globale Variablen zu verwenden. Also habe ich mich gefragt, ob das gleiche Ergebnis erreicht werden könnte, ohne Globals zu verwenden.
Irgendwelche Vorschläge?
Danke für Ihre Hilfe.
Verwenden eines Abschlusses:
%Vor%Verwenden einer Klasse (die offensichtlichste Lösung in einer OOPL):
%Vor% Unter Verwendung eines Generators (nicht direkt aufrufbar, müssen Sie die Methode .next()
verwenden):
Sie können Funktionsattribute verwenden:
%Vor%Oder Schließungen:
%Vor%Ich werde eine alternative Lösung für die Antwort von Sergey anbieten: Exploit veränderbare Vorgabe Argumente!
%Vor%Dies hat den Nachteil, dass ein Benutzer die Funktion fälschlicherweise mit einem Argument aufrufen kann und keine Fehlermeldung erhalten wird.
Sie können auch den Generator verwenden.
%Vor%Ausgabe:
%Vor%Sie können den Generator auch verbessern, ihn flexibler machen:
%Vor%