In C/C++ haben Sie Variablen im Stapel, wenn Sie eine lokale Variable in einer Funktion erstellen.Python erstellt alles von Heap?
http://effbot.org/zone/call-by-object.htm
CLU Objekte existieren unabhängig von Verfahren Aktivierungen. Der Bereich für Objekte wird aus einem dynamischen Speicherbereich zugewiesen. /.../ In der Theorie bleiben alle Objekte für immer bestehen. In der Praxis kann der von einem Objekt belegte Speicherplatz zurückgewonnen werden, wenn das Objekt für kein CLU-Programm länger verfügbar ist.
Bedeutet das, dass Objekte in Python vom Heap erstellt werden (wie in malloc in c/C++)? und die Objekte werden freigegeben, wenn ihnen kein Name zugeordnet ist (wie Smart Pointer)?
Beispiel:
def foo(a):
result = []
result.append(a)
return result
foo("hello")
myList = foo("bye")
Das erste Ergebnis ([]) wurde in dem Heap erstellt und wurde aufgehoben, weil es keine seinen Namen mit ihm verbunden?
Sie können auch Dinge manuell löschen mit 'del' wie in' del result', wenn Sie denken, dass Sie müssen. –
Wenn Sie die Frage stellen möchten, dass Ihre Funktion immer dieselbe Liste verwenden soll, beachten Sie, dass Sie sie als 'def foo (a, result = [])' definieren können, und die gleiche Liste wird jedes Mal verwendet Rufen Sie die Funktion auf, da sie erstellt wird, wenn die Funktion definiert ist, und nicht, wenn sie ausgeführt wird. – geoffspear