_
は、インタプリタの特別な変数です。常に前の式の結果に割り当てられます。だから、そういう使い方はしない。
あなたのコードは、通常のPythonシェルで正常に動作しますので、ところで問題は、IPythonシェルに関連すると思わ:
通常のPythonシェルでは、変数_
に何を割り当てるとき、それはそのオブジェクトに割り当てられたままだろうそれだけで、特別な振る舞いを失います。
Pythonシェル:
>>> 2*2
4
>>> _ #works as expected
4
>>> _ = 2 #after assignment, it's magic functionality is gone
>>> _*5
10
>>> _
2
IPythonシェル:
IPython
_
で
は、Pythonシェルの_
とは動作が異なります。たとえそれをある変数に代入しても、ある計算を行うとすぐに更新されます。 IPythonのdocsから
In [1]: 2*2
Out[1]: 4
In [2]: _
Out[2]: 4
In [3]: _ = 10
In [4]: _*10
Out[4]: 100
In [5]: _
Out[5]: 100
:
次のグローバル変数は常に(そう にそれらを上書きしないでください!)が存在します。
_:(シングルアンダースコア):店舗をPythonの デフォルトインタープリタのような以前の出力。 ..パイソンdocsから
:
特別な識別子_
が 店舗最後の評価の結果に対話インタプリタに使用されます。それは __builtin__
モジュールに格納されています。対話モードでない場合、_
には特別な意味はなく、定義されていません。
注:という名前は、国際化と組み合わせて使用されることがよくあります。この規則の詳細については、gettext モジュールのドキュメントを参照してください。
[Mercurial/Python - Underscore Functionとは何か?](http://stackoverflow.com/questions/3077227/mercurial-python-what-does-the-underscore-function-do) – dimo414
@ dimo414:いいえ、これはその質問の重複ではありません。私は私の答えでアンダースコア関数のその使い方に触れるが、それは** OPが何を求めているのではない**です。これは、なぜPythonインタラクティブインタプリタが何かを '_'に代入した理由です。 –
あなたは正しいです、私は可能な複製を投稿した後にそれを実現しました。私たちは[投票から閉鎖を取り消すことはできません](http://meta.stackexchange.com/questions/915/can-we-have-the-ability-to-rescind-a-close-vote-before-it私はそれがコメントを削除するよりも参照を残してより有益であると思った(人々は確かにリンクされた質問への答えを探してこのページに着陸する可能性があります)。 – dimo414