[Python-de] "Static" Variabeln in einer Funktion möglich?
Tomek Meka
tmeka at gmx.net
Sun Apr 13 19:10:17 EDT 2003
> kann ich in einer Python Funktion eine Variabel über den mehrfachen Aufruf
> der Funktion erhalten, so wie mit "static" in C?
> Mit Klassen geht das wohl, aber mit einer einfach Funktion?
> Empfehlungen? Danke!
Hallo!
Es gibt, soviel ich weiss, zwei Möglichkeiten, das Verhalten der
static-Variablen zu simulieren: durch default-Parameter und durch
Closures (ab python 2.1). In beiden Fällen müssen es aber änderbare
Obiekte sein, also keine primitive Typen und keine Tupeln. Kleine
Beispiele:
>>> def f1():
... _values = { 't': 5 }
... def f2(newt):
... _values['t'] = newt
... print _values['t']
... return f2
...
>>> f2 = f1()
>>> f2(5)
5
>>> f2(6)
6
>>> def f2(newt, _values = { 't': None }):
... print "alter Wert: %s" % _values['t']
... _values['t'] = newt
... print "neuer Wert: %s" % _values['t']
...
>>> f2(1)
alter Wert: None
neuer Wert: 1
>>> f2(2)
alter Wert: 1
neuer Wert: 2
Grüsse,
Tomek
More information about the Python-de
mailing list