Hallo,
um nochmal eine manchmal verwirrende Eigenheit zu erläutern, auch wenn es nicht 1 zu 1 auf Dein Beispiel zutrifft:
Code: Alles auswählen
>>> i = 5
>>> def out():
... print i
... i = 3
...
>>> out()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 2, in out
UnboundLocalError: local variable 'i' referenced before assignment
Im Beispiel ist der Name i global an das Integerobjekt 5 gebunden.
Theoretisch kannst Du das Objekt innerhalb der Funktion referenzieren. ABER: wenn Du im weiteren Verlauf der Funktion den Namen neu bindest, wie in diesem Fall an das Integerobjekt der 3, dann gilt der Name (quasi rückwirkend) als lokal. Daher ist der Zugriff wie oben dargestellt nicht möglich. Lösung wäre eine Definition als 'global i' (unschön) oder die Übergabe als Funktionsparameter von außen (sauber).
Ich hoffe, das war verständlich.
Grüße,
Michel
Diese Nachricht zersört sich in 5 Sekunden selbst ...