Seite 1 von 1

Globale Variablen

Verfasst: Mittwoch 14. April 2010, 09:14
von lodder
Sind eigentlich Variablen die erst in einer if-Anweisung inizialisiert werden globale Variablen oder muss ich sie vor der if-Anweisung z.B. mit zahl = None oder zahl = 0 erst inizialisieren ?
Bei C muss ich es davor machen, weil sonst die Variable nur in der if-Anweisung als sichtbar dient.

viele grüße

Verfasst: Mittwoch 14. April 2010, 09:21
von jbs
Ich verstehe nicht was du meinst. Hast du denn mal ausprobiert, was du möchtest und hast du ein Beispiel.

Globale Variablen haben nichts mit f zu tun. Wenn du auf eine Variable zugreifen willst, dann sollte sie auch bestehen.

Re: Globale Variablen

Verfasst: Mittwoch 14. April 2010, 09:34
von Defnull
lodder hat geschrieben:Sind eigentlich Variablen die erst in einer if-Anweisung inizialisiert werden globale Variablen oder muss ich sie vor der if-Anweisung z.B. mit zahl = None oder zahl = 0 erst inizialisieren ?
Bei C muss ich es davor machen, weil sonst die Variable nur in der if-Anweisung als sichtbar dient.
if/while/for Blöcke haben keinen eigenen Namensraum. Variablen, die darin angelegt werden, sind auch außerhalb des Blockes sichtbar, aber natürlich erst nachdem sie angelegt wurden.

Hör auf in C zu denken. Das hilft dir nicht weiter. Vergiss C und lerne Python als eine völlig neue Sprache. Dann ersparst du dir einigen Ärger. Und vor allem: Probiere es aus. Dein Forenbeitrag hat wahrscheinlich mehr Tipparbeit verursacht, als ein kleines Experiment.

Code: Alles auswählen

>>> if 1:
...     a = 5
>>> print a
5

Verfasst: Mittwoch 14. April 2010, 09:39
von lodder
hier mal ein saublödes Beispiel:

Code: Alles auswählen

wert = -2
while True:
    if wert == 1:
        zahl = 0
        break
    else:
        print 'Fehler'
        zahl = -1
        break

print zahl

das heißt also ich muss die Variable zahl nicht vor der While oder if -Schleife inizialisieren, sondern ich kann sie erst in der Schleife selbst erstellen mit zahl = -1 z.B.

Verfasst: Mittwoch 14. April 2010, 09:45
von sma
Ja.

Stefan

Verfasst: Mittwoch 14. April 2010, 09:48
von lodder
danke stefan. ich fange an python zu lieben. du hast recht. C einfach vergessen

Verfasst: Mittwoch 14. April 2010, 12:54
von /me
lodder hat geschrieben:

Code: Alles auswählen

wert = -2
while True:
    if wert == 1:
        zahl = 0
        break
    else:
        print 'Fehler'
        zahl = -1
        break
break?

Das sieht aus wie bei einem case in C, aber nicht wie Python.

Verfasst: Mittwoch 14. April 2010, 13:15
von xpilz
break?
aber break gibt es doch in Python, zwar nur in Schleifen oder warst du auf den Schreibstil aus?

Verfasst: Mittwoch 14. April 2010, 13:55
von sma
Ich denke, /me kritisierte den Stil. In den konkreten Fall hätte das break auch hinter dem if/else stehen können und dann wiederum wäre die while-Schleife auch unnötig gewesen. Also einfach

Code: Alles auswählen

if whatever:
    zahl = 1
else:
    zahl = 3
Dies hingegen würde ich auch in Python lieber so schreiben:

Code: Alles auswählen

zahl = 1 if whatever else 3
Doch dann wäre die Frage, ob man Variablen auch innerhalb von if oder while-Blöcken erzeugen kann und ob sie dann auch nach diesen Blöcken noch existieren (sie tuen es) obsolet geworden.

Stefan