Heim >Backend-Entwicklung >Python-Tutorial >Wie kann ich statische Variablen in Python-Funktionen simulieren?

Wie kann ich statische Variablen in Python-Funktionen simulieren?

DDD
DDDOriginal
2024-12-16 19:03:16213Durchsuche

How Can I Simulate Static Variables in Python Functions?

Statische Variablen in Python-Funktionen: Nachahmung von C/C

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.

Statische Variablen in Python-Funktionen implementieren

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.

Decorator-Ansatz

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)

Beeinflusst der Klassenumfang statische Variablen?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn