2016-05-10 3 views
0

Ich habe eine Funktion ausgeführt, f(), die knapp über 10 Stunden dauerte, um abzuschließen. Leider habe ich den Fehler gemacht, seine Ausgabe nicht zuzuweisen, d. H. Foo = f().rückwirkend die Ausgabe einer Funktion zu einer Variablen in Python zuweisen

Ich habe auch den Wert des Unterstrichs '_', Variable geändert.

Ich frage mich, sind die Ergebnisse von f() noch im Speicher? Gibt es eine Möglichkeit, auf sie zuzugreifen?

+2

Siehe [diese Antwort] (http://stackoverflow.com/a/200045/2781698). Das funktioniert nur, wenn Sie in einer interaktiven Shell sind (wie zB iPython) – Mathias711

+0

Das ist eine großartige Antwort, aber leider ist sie nicht auf der interaktiven Shell verfügbar, die ich verwende :-( – emac

+0

@emac: dann verwenden Sie das normale Python interactive shell, nicht IPython (was ist die Antwort auf diese Frage?) –

Antwort

0

Ich gehe davon aus, dass Sie im interaktiven Python-Interpreter sind, und dass Sie _ nicht tatsächlich verwendet haben, um seinen Wert zu widerspiegeln! Wenn Sie dies getan haben, ist die Ausgabe Ihres Funktionsaufrufs verloren gegangen.

Wenn Sie zuvor noch nichts geantwortet haben, aber zuvor _ gebunden haben, dann ist dies ein neuer globaler Shadowing, der den interaktiven Interpreter integriert, der Ihre Funktionsausgabe erfasst hat.

Verwenden del _ es zu entfernen und den eingebauten, zeigt, dass noch Ihre Funktion Ausgang halten:

>>> del _ 
>>> output = _ 

Das funktioniert, weil die eingebauten in _ Namen immer auf das letzten Ausdruck Ergebnis gebunden ist, unabhängig davon, wobei eine globale _:

>>> _ = 'foo' 
>>> 1 + 1 # an expensive operation! 
2 
>>> del _ 
>>> _ 
2 

Wenn Sie IPython verwenden, dann können Sie alle Ergebnisse zugreifen, indem ihre Ausgangsnummer; Wenn ein Ergebnis mit Out[42] vorne angezeigt wird, verwenden Sie _42, um auf das zwischengespeicherte Ergebnis zuzugreifen.

+0

Leider habe ich die Zeit für die Ausführung des Programms wiederholt! Sieht so aus, als wären die Ergebnisse weg! Du lebst und lernst ... – emac

+0

@emac: Es tut mir leid zu hören Vielleicht möchten Sie trotzdem zu IPython wechseln, wenn Sie in Python viel Datenverarbeitung oder -exploration durchführen, dass die interaktive Shell über viele leistungsstarke Funktionen verfügt, die Ihnen helfen, wie das Zwischenspeichern neuerer Ergebnisse. –

Verwandte Themen