205

In many symbolic math systems, such as Matlab or Mathematica, you can use a variable like Ans or % to retrieve the last computed value. Is there a similar facility in the Python shell?

poke
  • 369,085
  • 72
  • 557
  • 602
Edward Z. Yang
  • 26,325
  • 16
  • 80
  • 110

3 Answers3

304

Underscore.

>>> 5+5
10
>>> _
10
>>> _ + 5
15
>>> _
15
Mark Cidade
  • 98,437
  • 31
  • 224
  • 236
  • 29
    It only works in the interactive shell, though. Don't rely on it for scripts. – John Fouhy Oct 14 '08 at 04:54
  • 12
    Additionally, it doesn't work if the variable `_` has been previously assigned. It's not uncommon, as this symbol is also used for throwaway variables (see https://stackoverflow.com/questions/5893163/what-is-the-purpose-of-the-single-underscore-variable-in-python) –  Jul 05 '17 at 08:06
  • 6
    Yay, the final piece. With this I can use interactive python as my calculator. – Jaakko Aug 09 '19 at 10:18
106

Just for the record, ipython takes this one step further and you can access every result with _ and its numeric value

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

And it is possible to edit ranges of lines with the %ed macro too:

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

In [2]: foo()
bar

In [3]: %ed 1-2
Peter Hoffmann
  • 56,376
  • 15
  • 76
  • 59
21

IPython allows you to go beyond the single underscore _ with double (__) and triple underscore (___), returning results of the second- and third-to-last commands.

Alternatively, you can also use Out[n], where n is the number of the input that generated the output:

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

...

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

For more info, see https://jakevdp.github.io/PythonDataScienceHandbook/01.04-input-output-history.html .

Jan Kukacka
  • 1,196
  • 1
  • 14
  • 29