Ich habe die letzten paar Stunden hier und anderswo gelesen und experimentiert, aber ich verstehe nicht wirklich, was ich bin sicher, ist ein sehr grundlegendes Konzept: Werte übergeben (wie Variablen) zwischen verschiedenen Funktionen. eine ganze Reihe von Werten zu einer Liste in einer Funktion, wollen dann später in einer anderen Funktion, diese Liste verwendenPython: Übergeben von Variablen zwischen Funktionen
Zum Beispiel hat ich zuweisen:
list = []
def defineAList():
list = ['1','2','3']
print "For checking purposes: in defineAList, list is",list
return list
def useTheList(list):
print "For checking purposes: in useTheList, list is",list
def main():
defineAList()
useTheList(list)
main()
Basierend auf meinem Verständnis von mir, welche Funktionsargumenten tun,
würde folgendes erwarten:- Initialisiere "Liste" als leere Liste; call main (zumindest weiß ich, dass ich Recht habe ...)
- Innerhalb von defineAList(), weisen Sie der Liste bestimmte Werte zu; die neue Liste dann
- In main() zurück in main() übergeben, rufen useTheList (Liste)
- Da ‚Liste‘ in den Parametern der useTheList Funktion enthalten ist, würde ich erwarten, dass useTheList nun die Liste verwenden würden, wie definiert durch defineAList(), NICHT die leere Liste, die vor dem Aufruf von main definiert wurde.
Dies ist jedoch offensichtlich ein fehlerhaftes Verständnis. Meine Ausgabe ist:
For checking purposes: in defineAList, list is ['1', '2', '3']
For checking purposes: in useTheList, list is []
Also, da „Rückkehr“ offensichtlich nicht tut, was ich denke, dass es der Fall ist, oder zumindest tut es nicht so, wie ich denke, es sollte ... was bedeutet es eigentlich? Könnten Sie mir bitte anhand dieses Beispiels zeigen, was ich tun müsste, um die Liste von defineAList() zu übernehmen und sie in useTheList() zu verwenden? Ich neige dazu, die Dinge besser zu verstehen, wenn ich sie sehe, aber viele der Beispiele für richtiges Argument-Passing, die ich gesehen habe, verwenden auch Code, den ich noch nicht kenne, und während ich darüber nachdenke, was vor sich geht, ich Ich verstehe dieses Konzept nicht wirklich. Ich benutze 2,7.
ETA- in der Vergangenheit, eine ähnliche Frage stellend, wurde vorgeschlagen, dass ich eine globale Variable anstelle von nur Einheimischen verwende. Wenn es auch hier relevant ist - für die Zwecke der Klasse, die ich nehme, dürfen wir keine Globals verwenden.
Vielen Dank!
Vielen Dank für Ihre ausführliche Erklärung auch! Ich wusste, dass ich hier etwas Grundlegendes vermisste. :) – user2113818
Bitte nenne nicht das Zeug 'liste', du verlierst die Fähigkeit, die eingebaute 'liste' zu nennen :) –
Ich tue nicht, wenn ich etwas schreibe, was ich eigentlich für einen Zweck ausführen möchte! – user2113818