Globale Variable in Funktion importieren

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
Dexter1997
User
Beiträge: 92
Registriert: Sonntag 2. Dezember 2012, 21:13

Mit welchem Befehl mache ich mehrere globale Variablen in einer Funktion nutzbar?
BlackJack

@Dexter1997: Am besten gar nicht. Funktionen haben Argumente und einen Rückgabewert. Nutze das.
Dexter1997
User
Beiträge: 92
Registriert: Sonntag 2. Dezember 2012, 21:13

Ein netter Tipp aber trotzdem keine Antwort ;)
BlackJack

@Dexter1997: Das ist nicht nur eine Antwort, sondern auch die Vernünftigste.
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Dafuer braucht es keinen Befehl:

Code: Alles auswählen

import random
MINIMAL_NUMBER = 5
MAXIMAL_NUMBER = 23

def random_from_interval():
    return random.randint(MINIMAL_NUMBER, MAXIMAL_NUMBER)
Globale Namen sind innerhalb einer Funktion nutzbar, Punkt.
Dexter1997
User
Beiträge: 92
Registriert: Sonntag 2. Dezember 2012, 21:13

vielen dank für die antwort!
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Dexter1997 hat geschrieben:vielen dank für die antwort!
Wobei Du damit nicht glücklich werden wirst ;-)
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

@Hyperion: Ich wuerde es ja anders formulieren: Globale Variablen anders zu verwenden macht viel ungluecklicher ;)
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Du meinst als Nicht-Konstanten nehme ich an? ;-)
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Chazy
User
Beiträge: 9
Registriert: Samstag 8. Dezember 2012, 09:29

Ich stoß mal auf ein Problem, wo eine globale Variable innerhalb einer Funktion nicht aufrufbar war, warum auch immer :K
Auch wenn das nicht viel Sinn macht, gibt es jedoch aspekte wie das setzen von Flags wo man die globalen Variablen von nutzen sind.

Code: Alles auswählen

flag = 0

def testfunct():
    return "Hello World"

def main():
    global flag
    if flag == 0:
        print testfunct()
if __name__ == "__main__":
    main()
wie in Zeile 7, ein "Global" vor den globalen Variablennamen setzen, dann wird auch der Wert erkannt.
Benutzeravatar
snafu
User
Beiträge: 6740
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Man muss unterscheiden zwischen globalen Konstanten und globalen Variablen. Letztere (also da, wo sich der Wert noch ändern kann) gehören definitiv nicht auf Modulebene.
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Und erstere sollte man auch GROSS schreiben, um sie gegenueber anderen als Konstanten zu deklarieren.
In deinem Beispiel ist auch kein `global` noetig. Auch musst du dir die Frage gefallen lassen, warum `flag` in diesem Fall kein Parameter von `main` ist.
Chazy
User
Beiträge: 9
Registriert: Samstag 8. Dezember 2012, 09:29

cofi hat geschrieben:Auch musst du dir die Frage gefallen lassen, warum `flag` in diesem Fall kein Parameter von `main` ist.
da kann ich dir nur zustimmen :D
wie gesagt, sollte auch nur ein kleines beispiel sein
Antworten