インタラクティブなPythonシェルで最後の結果を取得する


157

このようにMatlabやMathematicaのよう多くのシンボリック数学のシステムでは、次のように変数を使用することができるAnsか、%最後に計算値を取得します。Pythonシェルにも同様の機能はありますか?


11
Pythonでも、最後の答えは42になります
。– Tomalak

3
42?誰もが事前のインカンタート参照の機会を逃しました!
amindfv 2011

[in] >>> _1 [out] >>> 42?誰もが事前のインカンタート参照の機会を逃しました!
グレゴリー

回答:


236

アンダースコア。

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

19
ただし、対話型シェルでのみ機能します。スクリプトをそれに依存しないでください。
John Fouhy、

5
さらに、変数_が以前に割り当てられている場合は機能しません。この記号は使い捨て変数にも使用されるため、珍しいことではありません(stackoverflow.com/questions/5893163/…を参照)

3
いや、最後の作品。これにより、インタラクティブなpythonを電卓として使用できます。
Jaakko

81

記録のために、ipythonはこれをさらに一歩進め、_とその数値ですべての結果にアクセスできます

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マクロを使用して行の範囲を編集することもできます。

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

In [2]: foo()
bar

In [3]: %ed 1-2

4
発見__および___1.2.1で同様偶然。
Ciro Santilli郝海东冠状病六四事件法轮功

9

IPythonでは_、ダブルアンダースコア(__)とトリプルアンダースコア(___)を使用してシングルアンダースコアを超えて、最後から2番目と最後から3番目のコマンドの結果を返すことができます。

または、を使用することもできますOut[n]nは、出力を生成した入力の番号です。

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

...

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

詳細については、https: //jakevdp.github.io/PythonDataScienceHandbook/01.04-input-output-history.htmlを参照してください

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.