Um Globale-Variablen im Funktionskopf (also im Lokalem-Bereich) zu ändern, muss man es unter Python innerhalb des Funktionsbereichs Global machen.
Das geht mit dem Befehl global:
Code: Alles auswählen
myGlobal = None
def foo():
global myGlobal
print myGlobal
myGlobal = None
myGlobal = "egg"
foo()
Allerdings wird dann natürlich der Inhalt von myGlobal auch außerhalb der Funktion überschrieben. Weil er ja durch den Befehl global auf den Globalen Namen zugreift, anstatt auf einen Lokalen.
Besser wäre es vermutlich den Befehl return zu verwenden, welches das Ergebnis oder auch gezielte Zeichen einer Funktion zurück gibt.
Code: Alles auswählen
myGlobal = None
def foo():
print myGlobal
return None
myGlobal = "egg"
myGlobal = foo()
Bei None passiert dann allerdings gar nichts.
Wenn Du aber den Inhalt mir einem weiteren print-Befehl ausgeben lässt, sollte dann 'None' ausgegeben werden.
edit:
Korrektur:
Es hat nichts mit None zu tun, sondern da es nur eine Zuweisung ist, muss man natürlich noch mal die Variable ausgeben lassen (also print), um zu sehen, was da drin ist.
Ich mache nie einen Fehler Zweimal.
Schließlich ist die Auswahl ja groß genug.