2013-04-27 11 views

答えて

4

コードブロックの実行に関連する組み込みの名前空間は、グローバル名前空間で名前__builtins__を参照することで実際に検出されます。これは辞書またはモジュールでなければなりません(後者の場合、モジュールの辞書が使用されます)。デフォルトでは、__main__モジュールの場合、__builtins__は組み込みモジュール__builtin__(注:no ')です。他のモジュールでは__builtins____builtin__モジュール自体の辞書のエイリアスです。 __builtins__は、ユーザが作成した辞書に設定して弱い形の制限付き実行を作成することができます。 (あなたがメインモジュールであるため)だから、本当にそれは

>>> __builtins__.max 
<built-in function max> 

__builtins__を探している

しかし、前述したように、これはメインの一部ではない__builtin__のためだけの別名(ありますモジュールの名前空間は、ロードされ、参照されています(__builtins__)。

4

__builtin__利用可能である一方で、なぜ、最初の文の戻りNameErrorを行うには、あなたは常にグローバルで利用可能である機能を交換または追加したい場合には擬似モジュールへのアクセス/インポートするだけの方法です。関数を使用するためにインポートする必要はありません。しかし__builtin__自体は__builtin__に存在しないので、最初にインポートしなければ利用できません。

このモジュールの詳細については、the python docsを参照してください。

2

built-inの名前をすべて使用できるようにするには、import __builtin__は不要です。しかし、__builtin__という名前をコードのスコープ内で使用できるようにするには、それをインポートする必要があります。

関連する問題