[Python-de] Liste mit Listen mit objekten und Strings speichern
Gerold Penz
gerold.penz at aon.at
Son Mai 22 08:55:36 CEST 2005
Tino Schmedemann schrieb:
> ah Fehler gefunden - war n bisschen zu voreilig lag an einer nicht
> globalen Variablen was mich zur nächsten Frage motiviert :
>
> CODE
> -----------------------------------------------------------------------------------------
> terminliste = []
>
> def loadTerminListe():
> f = open('terminliste.bin','r')
> teilnehmerliste = pickle.load(f)
> f.close()
>
> def saveTerminListe():
> f = open('terminliste.bin','w')
> pickle.dump(terminliste,f)
> f.close()
>
> CODE
> ------------------------------------------------------------------------------------------
> das sind wohl die relevanten Teile ... code hat funktioniert bloss der
> dump hat wohl gedacht terminliste wäre ne lokale variable - wie kommt
> sowas?
Hi Tino!
Was schreibenden Zugriff auf globale Variablen betrifft:
http://www.kubieziel.de/pythonwiki/index.php/Bitte_erkl%E4re_die_Regeln_f%FCr_lokale_und_globale_Variablen!
Versuche, nur in Notfällen mit globalen Variablen zu arbeiten. Das kann
dir bei anspruchsvolleren Programmen das Leben sehr erleichtern, da
schon der Aufruf einer Funktion anzeigt, ob eine Variable geändert wird
oder nicht.
--CODE-- (nicht so optimal)
my_global_var = "Hallo"
def my_function():
global my_global_var
my_global_var = "Servus"
my_function()
print my_global_var
--/CODE-- (nicht so optimal)
--CODE-- (besser)
my_global_var = "Hallo"
def my_function():
return "Servus"
my_global_var = my_function()
print my_global_var
--/CODE-- (besser)
Beim zweiten Beispiel sieht man schon beim Aufrufen der Funktion, dass
die Variable "my_global_var" verändert wird. Das erhöht die Lesbarkeit
deines Codes.
Dein Code könnte also so aussehen:
--CODE--
terminliste = []
def loadTerminListe():
f = open('terminliste.bin','r')
rueckgabe = pickle.load(f)
f.close()
return rueckgabe
def saveTerminListe(tlist):
f = open('terminliste.bin','w')
pickle.dump(tlist,f)
f.close()
terminliste = ["1", "2"]
saveTerminListe(terminliste)
terminliste = ["0"]
print terminliste
terminliste = loadTerminliste()
print terminliste
--/CODE--
mfg
Gerold
:-)
--
______________________________________________________________________
Gerold Penz - bcom - Programmierung
gerold.penz at aon.at | http://gerold.bcom.at | http://sw3.at
Ehrliche, herzliche Begeisterung ist einer der
wirksamsten Erfolgsfaktoren. Dale Carnegie