Ottieni l'ultimo risultato nella shell interattiva di Python


157

In molti sistemi matematici simbolici, come Matlab o Mathematica, è possibile utilizzare una variabile come Anso %per recuperare l'ultimo valore calcolato. Esiste una funzione simile nella shell Python?


11
Anche in Python l'ultima risposta sarà 42.
Tomalak,

3
42? Tutti hanno perso l'occasione per un riferimento al precedente Incantato!
amindfv,

[in] >>> _1 [out] >>> 42? Tutti hanno perso l'occasione per un riferimento al precedente Incantato!
Gregory

Risposte:


236

Sottolineare.

>>> 5+5
10
>>> _
10
>>> _ + 5
15
>>> _
15

19
Funziona solo nella shell interattiva, però. Non fare affidamento su di esso per gli script.
John Fouhy,

5
Inoltre, non funziona se la variabile _è stata precedentemente assegnata. Non è raro, in quanto questo simbolo viene utilizzato anche per le variabili usa e getta (vedi stackoverflow.com/questions/5893163/... )

3
Sì, l'ultimo pezzo. Con questo posso usare Python interattivo come la mia calcolatrice.
Jaakko,

81

Per la cronaca, ipython fa un ulteriore passo avanti e puoi accedere a tutti i risultati con _ e il suo valore numerico

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

Ed è possibile modificare anche intervalli di linee con la macro% ed:

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

In [2]: foo()
bar

In [3]: %ed 1-2

4
Trovato __e ___per caso anche in 1.2.1.
Ciro Santilli 8 冠状 病 六四 事件 法轮功

9

IPython ti consente di andare oltre il carattere di sottolineatura singolo _con double ( __) e triple underscore ( ___), restituendo i risultati del secondo e del terzo all'ultimo comando.

In alternativa, puoi anche utilizzare Out[n], dove nè il numero dell'input che ha generato l'output:

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

...

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

Per ulteriori informazioni, consultare https://jakevdp.github.io/PythonDataScienceHandbook/01.04-input-output-history.html .

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.