Globale Variablen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
lodder
User
Beiträge: 67
Registriert: Montag 11. Januar 2010, 11:03

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
Benutzeravatar
jbs
User
Beiträge: 953
Registriert: Mittwoch 24. Juni 2009, 13:13
Wohnort: Postdam

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.
[url=http://wiki.python-forum.de/PEP%208%20%28%C3%9Cbersetzung%29]PEP 8[/url] - Quak!
[url=http://tutorial.pocoo.org/index.html]Tutorial in Deutsch[/url]
Benutzeravatar
Defnull
User
Beiträge: 778
Registriert: Donnerstag 18. Juni 2009, 22:09
Wohnort: Göttingen
Kontaktdaten:

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
Bottle: Micro Web Framework + Development Blog
lodder
User
Beiträge: 67
Registriert: Montag 11. Januar 2010, 11:03

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.
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Ja.

Stefan
lodder
User
Beiträge: 67
Registriert: Montag 11. Januar 2010, 11:03

danke stefan. ich fange an python zu lieben. du hast recht. C einfach vergessen
Benutzeravatar
/me
User
Beiträge: 3561
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

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.
Benutzeravatar
xpilz
User
Beiträge: 76
Registriert: Sonntag 11. April 2010, 12:46
Wohnort: Deutschland
Kontaktdaten:

break?
aber break gibt es doch in Python, zwar nur in Schleifen oder warst du auf den Schreibstil aus?
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

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
Antworten