Seite 1 von 1

While ohne Global variable

Verfasst: Sonntag 22. Februar 2015, 14:30
von Knuffi
Hallo Leute,
ich schaffe es nicht in einer Schleife (While) eine globale Variable zu definieren:

Code: Alles auswählen

def test()
 while s == 1:
   global xx
   mach irgend etwas
   xx = 1

##Hauptprogramm
mach irgendetwas
test()
print(xx)

das Hauptprogramm stürzt mit der Fehlermeldung:
global name "xx" is not defined

Wer kann mir helfen meinen Fehler zu finden.
Danke
gruß
Knuffi

Re: While ohne Global variable

Verfasst: Sonntag 22. Februar 2015, 14:34
von Knuffi
Habe den Fehler gefunden, muss zuerst XX = 0 definieren

Re: While ohne Global variable

Verfasst: Sonntag 22. Februar 2015, 14:45
von BlackJack
@Knuffi: Wenn überhaupt ``global`` dann sollte das nicht irgendwo in einer Schleife deklariert werden sondern am Anfang der Funktion, damit man die Monströsität auch gleich sieht und sie sich nicht irgendwo in der Funktion versteckt.

Aber eigentlich sollte man ``global`` überhaupt nicht verwenden. Wenn die Funktionen einen Wert hat der nach aussen getragen werden soll, dann gibt man diesen Wert zurück und schafft sich nicht undurchsichtigen Abhängigkeiten durch globale Variablen. Das gilt auch für den umgekehrten Weg: Werte (ausser Konstanten) sollten als Argumente an eine Funktion übergeben werden und nicht einfach so aus der ”Umgebung” kommen.

Wenn man das Hauptprogramm ebenfalls in eine Funktion steckt und nicht auf Modulebene stehen hat, dann passiert so etwas auch gar nicht erst.