Holen Sie sich das letzte Ergebnis in der interaktiven Python-Shell

157

In vielen symbolischen mathematischen Systemen wie Matlab oder Mathematica können Sie eine Variable wie Ansoder verwenden %, um den zuletzt berechneten Wert abzurufen. Gibt es eine ähnliche Funktion in der Python-Shell?

Edward Z. Yang
quelle
11
Sogar in Python wird die letzte Antwort 42 sein.
Tomalak
3
42? Jeder verpasste die Gelegenheit für eine vorherige Incantato-Referenz!
Amindfv
[in] >>> _1 [out] >>> 42? Jeder verpasste die Gelegenheit für eine vorherige Incantato-Referenz!
Gregory

Antworten:

236

Unterstreichen.

>>> 5+5
10
>>> _
10
>>> _ + 5
15
>>> _
15
Mark Cidade
quelle
19
Es funktioniert jedoch nur in der interaktiven Shell. Verlassen Sie sich bei Skripten nicht darauf.
John Fouhy
5
Außerdem funktioniert es nicht, wenn die Variable _zuvor zugewiesen wurde. Dies ist nicht ungewöhnlich, da dieses Symbol auch für Wegwerfvariablen verwendet wird (siehe stackoverflow.com/questions/5893163/… )
3
Ja, das letzte Stück. Damit kann ich interaktives Python als Taschenrechner verwenden.
Jaakko
81

Nur zur Veranschaulichung: ipython geht noch einen Schritt weiter und Sie können mit _ und seinem numerischen Wert auf jedes Ergebnis zugreifen

In [1]: 10
Out[1]: 10

In [2]: 32
Out[2]: 32

In [3]: _
Out[3]: 32

In [4]: _1
Out[4]: 10

In [5]: _2
Out[5]: 32

In [6]: _1 + _2
Out[6]: 42

In [7]: _6
Out[7]: 42

Mit dem Makro% ed können auch Zeilenbereiche bearbeitet werden:

In [1]: def foo():
   ...:     print "bar"
   ...:     
   ...:     

In [2]: foo()
bar

In [3]: %ed 1-2
Peter Hoffmann
quelle
4
Gefunden __und ___zufällig auch in 1.2.1.
Ciro Santilli 法轮功 冠状 病 六四 事件 8
9

Mit IPython können Sie _mit doppeltem ( __) und dreifachem Unterstrich ( ___) über den einzelnen Unterstrich hinausgehen und die Ergebnisse der vorletzten und drittletzten Befehle zurückgeben.

Alternativ können Sie auch verwenden Out[n], wobei ndie Nummer der Eingabe ist, die die Ausgabe generiert hat:

In [64]: 1+1
Out[64]: 2

...

In [155]: Out[64] + 3
Out[155]: 5

Weitere Informationen finden Sie unter https://jakevdp.github.io/PythonDataScienceHandbook/01.04-input-output-history.html .

Jan Kukacka
quelle