2009-10-08 5 views

答えて

43

最後に返された値を表している - あなたはlen(_)と呼ばれるポイントで、_は値'abc'ました。例えば

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

これはsys.displayhookによって処理され、そして_変数はglobals()でそれを見つけることができなかった理由ですintsumのようなものでbuiltins名前空間になります。

Python スクリプトにこのような機能はありません。スクリプトでは、_に特別な意味はなく、前のステートメントで生成された値に自動的には設定されません。

また、上記のように使用したい場合は、_をREPLに再割り当てすることに注意してください!

>>> _ = "underscore" 
>>> 10 
10 
>>> _ + 5 

Traceback (most recent call last): 
    File "<pyshell#6>", line 1, in <module> 
    _ + 5 
TypeError: cannot concatenate 'str' and 'int' objects 

これは、組み込み関数の_変数を隠すグローバル変数を作成します。割り当てを元に戻す(およびグローバルから_を削除)するには、あなたがする必要があります:

>>> del _ 

が、その後の機能が正常に戻るだろう( builtins._が再び表示されます)。

+7

FYI:REPLは、Read-Eval-Printループの略です。いつものように、ウィキペディアにはもっと必要な情報があります。 http://en.wikipedia.org/wiki/Read-eval-print_loop –

+0

「あそこの識別子」とは何ですか?クイック検索の結果は「単なる普通の、平凡な、平凡な」 - これはPythonスクリプトの "_"に関してどういう意味ですか? – user937284

+0

@ectomorphを更新して明確にしました。 –

17

なぜ見えないのですか?それは__builtins__

>>> __builtins__._ is _ 
True 

です。したがって、グローバルでもローカルでもありません。

この割り当てはどこで行われますか? sys.displayhook

>>> import sys 
>>> help(sys.displayhook) 
Help on built-in function displayhook in module sys: 

displayhook(...) 
    displayhook(object) -> None 

    Print an object to sys.stdout and also save it in __builtin__. 

2012編集:私は"スーパーグローバル"__builtin__以降「sのメンバーは、任意のモジュールでは、どこでも利用可能な、それを呼び出すと思います。

+1

__builtin__に置かれたスクリプトではなく、REPLでのみ使用できるものは何ですか? – user937284

2

通常、私たちはPythonで_を使用してugettext関数をバインドしています。

+1

これも当てはまりますが、Pythonアプリケーションのみです。 'gettext.install'は' __builtins __._ 'にバインドされるので、すべてのアプリケーションでインポートせずに利用できます。したがって、同じ種類の「魔法」の名前です。 – u0b34a0f6ae

関連する問題