Seite 1 von 1
den returnwert einer Funktion im weiteren Verlauf speichern
Verfasst: Freitag 26. Juni 2015, 07:04
von Lena
Hallo!
Ich habe eine Funktion, die in einem Dict Ergänzungen zufuegen kann. Ich möchte dass dies Ergänzungen halt für den weiteren Verlauf des Gesamtprogramms als Basis mit gespeichert werden.
Ich denke ich müsste dann eig einfach eine neue Variable mit dem returnwert der Funktion in das Programm bauen.
also etwa so :
ergaenzungen()
# das ist die Funktion, die ich erstellt habe ....als return ist 'neues_dict' ---> also ein Dictionary
neu=ergaenzungen()
So funktioniert das aber leider nicht...:/
Wisst ihr, wie das geht, bzw. habt ihr ne Idee??
Vielen Dank schon einmal für Antworten! LG
Re: den returnwert einer Funktion im weiteren Verlauf speich
Verfasst: Freitag 26. Juni 2015, 07:14
von bwbg
Ich habe einen Verdacht. Meine Glaskugel ist jedoch aufgrund von Koffeinmangel etwas trüb. Etwas mehr (überhaupt) Quelltext wäre hilfreich.
Re: den returnwert einer Funktion im weiteren Verlauf speich
Verfasst: Freitag 26. Juni 2015, 07:57
von /me
Lena hat geschrieben:So funktioniert das aber leider nicht...:/
Deine Problembeschreibung ist nicht wirklich klar.
Nehmen wir mal an, dass folgender Code vorhanden wäre.
Code: Alles auswählen
def add_settings(data):
data['Z'] = 3
return data
def main():
settings = {'A': 1, 'B': 2}
new_settings = add_settings(settings)
if __name__ == '__main__':
main()
Das tut prinzipiell was du möchtest, weist aber ein Problem auf. Ein Dictionary ist ein
mutable Datentyp. In der Funktion
add_settings wird das zurückgegebene Dictionary nicht neu erstellt, sondern das bestehenden Objekt
data geändert. Das führt dann dazu, dass in der Funktion
main nicht nur
new_settings den neuen Wert hat, sondern auch
settings, denn beide Namen verweisen auf das gleiche Objekt. In dem Fall würde man daher vom Anwendungsfall abhängig entweder gar keinen Rückgabewert verwenden oder in der Funktion
add_settings explizit eine Kopie des Dictionaries erstellen (und der Funktion dann auch noch einen sinnvolleren Namen geben).
Re: den returnwert einer Funktion im weiteren Verlauf speich
Verfasst: Freitag 26. Juni 2015, 08:03
von Lena
also es geht ja nur darum, das der Wert, der in return steht in dem weiteren Programm übernommen wird
def new():
alt={"hallo":["hey", "hola"], "tschüsse:["bye", "adios"]}
neu=alt
neues=str(input("Geben Sie ein neues Wort ein."))
neueswort=neues.lower()
#uebungen[wunsch].append(zusatz)
neu[wunsch].append(zusatz)
return (neu)
#also 'alt' steht in dem regulären Programmcode ebenfalls. Ich möchte dass alt dann so durch neu ersetzt wird, dass wenn ich die Funktion erneut aufrufe, ich die Werte die ich vor einer Std geändert habe immer noch da sind, auch wenn ich das Programm zwischenzeitlich geschlossen habe....
Re: den returnwert einer Funktion im weiteren Verlauf speich
Verfasst: Freitag 26. Juni 2015, 08:06
von Sirius3
@Lena: Du willst also den Inhalt von Deinem Wörterbuch in eine Datei schreiben und sie beim nächsten Programmstart wieder lesen. Dazu bietet sich das json-Modul an, dass Wörterbücher mit Listen und Strings und anderen Basisdatentypen in Dateien schreiben und lesen kann.
Re: den returnwert einer Funktion im weiteren Verlauf speich
Verfasst: Freitag 26. Juni 2015, 08:15
von Lena
Das ist jetzt wahrscheinlich eine dumme Frage....aber wie baue ich das in meinen Programmcode ein?
Ich kenn mich leider noch nicht so gut aus :/...
Re: den returnwert einer Funktion im weiteren Verlauf speich
Verfasst: Freitag 26. Juni 2015, 08:17
von /me
Lena hat geschrieben:Code: Alles auswählen
alt={"hallo":["hey", "hola"], "tschüsse:["bye", "adios"]}
neu=alt
Bitte setze deinen Code in die passenden Code-Tags damit er korrekt angezeigt wird.
Dieses
neu = alt tut nicht das, was du denkst. Ich verweise da auf meinen vorherigen Beitrag. Du erstellst dort keine Kopie von
alt, sondern bindest nur zusätzlich den Namen
neu an das gleiche Objekt.
Re: den returnwert einer Funktion im weiteren Verlauf speich
Verfasst: Freitag 26. Juni 2015, 08:20
von /me
Lena hat geschrieben:Ich kenn mich leider noch nicht so gut aus :/...
Dann ist das ja eine wunderbare Gelegenheit zum Lernen. Schau dir die
Dokumentation zu json an. Mehr als die jetzt hierhin zu kopieren könnten wir auch nicht machen. Wenn dann spezielle Fragen da sind, dann können wir wieder sinnvoll weiterhelfen.
Re: den returnwert einer Funktion im weiteren Verlauf speich
Verfasst: Freitag 26. Juni 2015, 09:31
von Lena
muss man das erst downloaden bevor man es importieren kann, oder ist es schon bei python mit drin?
Re: den returnwert einer Funktion im weiteren Verlauf speich
Verfasst: Freitag 26. Juni 2015, 09:33
von Sirius3
@Lena: das kannst Du Dir am einfachsten selbst beantworten, indem Du es ausprobierst.
Re: den returnwert einer Funktion im weiteren Verlauf speich
Verfasst: Freitag 26. Juni 2015, 11:21
von /me
Lena hat geschrieben:muss man das erst downloaden bevor man es importieren kann, oder ist es schon bei python mit drin?
Wenn du auf der angegebenen Seite oben in die Breadcrumb-Navigation schaust dann siehst du, dass das zum Bereich "The Python Standard Library" gehört. Ergänzend zum Durcharbeiten des
Tutorials solltest du zumindest der
Übersicht der Standard Library ruhig mal einen Blick gönnen um eine Idee davon zu bekommen was alles dabei ist.