[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