Heim >Backend-Entwicklung >Python-Tutorial >Wie kann ich statische Variablen in Python-Funktionen simulieren?
In C/C können Funktionen statische Variablen deklarieren, um den Status über Funktionsaufrufe hinweg beizubehalten. Python hingegen unterstützt standardmäßig keine statischen Variablen innerhalb von Funktionen.
Um das Verhalten statischer Variablen innerhalb von Python-Funktionen zu reproduzieren, verwenden Sie Folgendes Ansatz:
<br>def foo():</p> <pre class="brush:php;toolbar:false">if not hasattr(foo, "counter"): foo.counter = 0 foo.counter += 1 print("Counter is", foo.counter)
Hier prüfen wir die Existenz des „Zähler“-Attributs innerhalb der Funktion. Wenn es nicht existiert, initialisieren wir es auf 0. Dieser Initialisierungscode wird zu Beginn des ersten Funktionsaufrufs ausgeführt.
Um die Lesbarkeit zu verbessern und den Initialisierungscode nach zu verschieben Oben kann man einen Dekorator verwenden:
<br>def static_vars(**kwargs):</p> <pre class="brush:php;toolbar:false">def decorate(func): for k in kwargs: setattr(func, k, kwargs[k]) return func return decorate
@static_vars(counter=0)
def foo():
foo.counter += 1 print("Counter is", foo.counter)
Das Platzieren der Funktion innerhalb einer Klasse ändert sich nicht die Implementierung statischer Variablen. Die statischen Variablen sind weiterhin funktionsspezifisch und nicht klassenspezifisch.
Das obige ist der detaillierte Inhalt vonWie kann ich statische Variablen in Python-Funktionen simulieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!