Beim Lesen der Dokumentation verstehe ich, dass Python einen separaten Namespace für Funktionen hat. Wenn ich in dieser Funktion eine globale Variable verwenden möchte, muss ich diese verwenden global.
Ich benutze Python 2.7 und habe diesen kleinen Test ausprobiert
>>> sub = ['0', '0', '0', '0']
>>> def getJoin():
... return '.'.join(sub)
...
>>> getJoin()
'0.0.0.0'
Es scheint, dass die Dinge auch ohne gut funktionieren global. Ich konnte problemlos auf globale Variablen zugreifen.
Vermisse ich etwas Folgendes stammt aus der Python-Dokumentation:
In einer globalen Anweisung aufgeführte Namen dürfen nicht als formale Parameter oder in einem for-Regelkreisziel, einer Klassendefinition, einer Funktionsdefinition oder einer Importanweisung definiert werden.
Während formale Parameter und Klassendefinition für mich sinnvoll sind, kann ich die Einschränkung für die Ziel- und Funktionsdefinition der Schleifensteuerung nicht verstehen.
def foo(): ...und foo = ...gleichzeitig). Es wird für jeden Funktionsaufruf ein neuer Bereich erstellt. (Aber wie unterscheidet sich dies von etwa jeder anderen