globale variablen in python

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
PNS-Richi
User
Beiträge: 68
Registriert: Donnerstag 17. Januar 2008, 01:48

Sonntag 8. März 2009, 19:04

Hallo,

irgendwie hab ich ein Problem mit Globalen Variablen.

Wenn ich am Anfang vom Python Script eine Variable setze und versuche diese aus einer Klasse auszulesen, dann klappt es nicht, auch nicht mit dem "global" Statment. Kommischerweise geht es bei manchen Variablen.

Klar ich könnte es einfach als Parameter übergeben, das mache ich auch meistens, nur hier gehts um Globale Einstellungen, würde ich die ständig übergeben, wären die Parameter zum übergeben elendslang.

Was gut klappt ist eine Klasse zum ablegen von Globalen Variablen.

Was muss ich tun um in Python Globale Variablen zu Deklarieren?

lg Richi
Benutzeravatar
Blade Runner
User
Beiträge: 21
Registriert: Montag 23. Februar 2009, 11:41

Sonntag 8. März 2009, 19:28

``global`` kannst du in die Tonne treten.
Variablen, die ausserhalb jeder Struktur, also "am Anfang" initialisiert werden, sind global. Die sollten also überall verfügbar sein.
[quote="Roy Batty"]All those moments will be lost in time, like tears in rain ... time to die.[/quote]
Benutzeravatar
cofi
Moderator
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Sonntag 8. März 2009, 19:40

`global' brauchst du nur um den Wert eines Namen in einem globalen Namensraum zu überschreiben, da du dass nicht vorhast brauchst du das nicht. Auch sollte man das gleich ganz lassen, da es Fehler provoziert.

Möglich, dass du den Namen lokal neu vergeben hast?

Ansonsten ist es nur Herumraterei ohne Code.
Darii
User
Beiträge: 1177
Registriert: Donnerstag 29. November 2007, 17:02

Sonntag 8. März 2009, 19:59

Und bedenke auch, dass es in Python keine „richtigen“ globalen Variablen gibt. Global bedeutet global im Modul (also pro Datei).
PNS-Richi
User
Beiträge: 68
Registriert: Donnerstag 17. Januar 2008, 01:48

Sonntag 8. März 2009, 20:10

Dies steht am Anfang vom Script.

Code: Alles auswählen

LIST_PATH = '/etc/Guard/'
Dies kommt innerhalb einer Funktion, die in einer Klasse ist.

Code: Alles auswählen

UnboundLocalError: local variable 'LIST_PATH' referenced before assignment
Darüber ist noch eine Variable mit dem Namen "LOG_PATH", Zwei mal der selbe Code. Bei einem kommt der Fehler beim anderen nicht.

Code von der Version muss ich erst suchen.
bords0
User
Beiträge: 170
Registriert: Mittwoch 4. Juli 2007, 20:40

Sonntag 8. März 2009, 20:52

PNS-Richi hat geschrieben:Dies kommt innerhalb einer Funktion, die in einer Klasse ist.

Code: Alles auswählen

UnboundLocalError: local variable 'LIST_PATH' referenced before assignment
Dann hat Cofi wohl recht.

"global" habe ich bisher eigentlich nur zum Code-Golfen gebraucht: https://www.spoj.pl/problems/INTER/
Dauerbaustelle
User
Beiträge: 996
Registriert: Mittwoch 9. Januar 2008, 13:48

Sonntag 8. März 2009, 21:01

Also, Code her. Sofort! :P
PNS-Richi
User
Beiträge: 68
Registriert: Donnerstag 17. Januar 2008, 01:48

Sonntag 8. März 2009, 21:28

Also hier hab ich kein Backup mehr von der Fehlerhaften Version.

Wenn ich alles in einer Klasse speichere, dann geht es. Versuche ich es am Script Anfang mit Variablen so gehen nicht alle, dann kommt der Fehler.

Vll. hab ich in der Arbeit noch ein Backup, kann ich aber erst Morgen suchen, wenn ichs nicht finde rekonstruiere ich es einfach.

lg Richi
Antworten