私はこの単一のアンダースコアの意味を理解していません。それは魔法の変数ですか?私は地元の人々()とグローバル()で見ることができません。標準のPython REPL、_
で単一のアンダースコア "_"はPythonのビルトイン変数ですか?
>>> 'abc'
'abc'
>>> len(_)
3
>>>
私はこの単一のアンダースコアの意味を理解していません。それは魔法の変数ですか?私は地元の人々()とグローバル()で見ることができません。標準のPython REPL、_
で単一のアンダースコア "_"はPythonのビルトイン変数ですか?
>>> 'abc'
'abc'
>>> len(_)
3
>>>
最後に返された値を表している - あなたはlen(_)
と呼ばれるポイントで、_
は値'abc'
ました。例えば
:
>>> 10
10
>>> _
10
>>> _ + 5
15
>>> _ + 5
20
これはsys.displayhook
によって処理され、そして_
変数はglobals()
でそれを見つけることができなかった理由ですint
とsum
のようなもので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._
が再び表示されます)。
なぜ見えないのですか?それは__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のメンバーは、任意のモジュールでは、どこでも利用可能な、それを呼び出すと思います。
__builtin__に置かれたスクリプトではなく、REPLでのみ使用できるものは何ですか? – user937284
通常、私たちはPythonで_を使用してugettext関数をバインドしています。
これも当てはまりますが、Pythonアプリケーションのみです。 'gettext.install'は' __builtins __._ 'にバインドされるので、すべてのアプリケーションでインポートせずに利用できます。したがって、同じ種類の「魔法」の名前です。 – u0b34a0f6ae
FYI:REPLは、Read-Eval-Printループの略です。いつものように、ウィキペディアにはもっと必要な情報があります。 http://en.wikipedia.org/wiki/Read-eval-print_loop –
「あそこの識別子」とは何ですか?クイック検索の結果は「単なる普通の、平凡な、平凡な」 - これはPythonスクリプトの "_"に関してどういう意味ですか? – user937284
@ectomorphを更新して明確にしました。 –