[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