Uzyskaj ostatni wynik w interaktywnej powłoce Pythona

157

W wielu symbolicznych systemach matematycznych, takich jak Matlab lub Mathematica, można użyć zmiennej, takiej jak Anslub, %aby pobrać ostatnią obliczoną wartość. Czy w powłoce Pythona jest podobne udogodnienie?

Edward Z. Yang
źródło
11
Nawet w Pythonie ostatnią odpowiedzią będzie 42.
Tomalak
3
42? Wszyscy przegapili okazję do odniesienia się do Prior Incantato!
amindfv
[wejście] >>> _1 [wyjście] >>> 42? Wszyscy przegapili okazję do odniesienia się do Prior Incantato!
gregory

Odpowiedzi:

236

Podkreślać.

>>> 5+5
10
>>> _
10
>>> _ + 5
15
>>> _
15
Mark Cidade
źródło
19
Działa jednak tylko w powłoce interaktywnej. Nie polegaj na nim w przypadku skryptów.
John Fouhy,
5
Dodatkowo nie działa, jeśli zmienna _została wcześniej przypisana. Nie jest to rzadkie, ponieważ ten symbol jest również używany do zmiennych jednorazowych (patrz stackoverflow.com/questions/5893163/… )
3
Tak, ostatni kawałek. Dzięki temu mogę używać interaktywnego Pythona jako mojego kalkulatora.
Jaakko
81

Tak dla porządku, ipython idzie o krok dalej i możesz uzyskać dostęp do każdego wyniku za pomocą _ i jego wartości liczbowej

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

Możliwe jest również edytowanie zakresów linii za pomocą makra% ed:

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

In [2]: foo()
bar

In [3]: %ed 1-2
Peter Hoffmann
źródło
4
Znalezione __i ___przypadkowo również w 1.2.1.
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功
9

IPython pozwala wyjść poza pojedynczy znak podkreślenia za _pomocą double ( __) i potrójnego podkreślenia ( ___), zwracając wyniki poleceń przedostatnich i przedostatnich.

Alternatywnie możesz również użyć Out[n], gdzie njest numerem wejścia, które wygenerowało wyjście:

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

...

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

Więcej informacji można znaleźć pod adresem https://jakevdp.github.io/PythonDataScienceHandbook/01.04-input-output-history.html .

Jan Kukacka
źródło