__all__名前のリストまたはタプルに設定されたグローバル name を定義して、インポートされるものと、一般的にリストされるドキュメンテーション ツールを制限できます。
__all__ = ['function1', 'ClassName2']
名前はインポート__all__するものfrom test import *を制限し、特定のモジュールのパブリック API としてリストされているものを制限するためにドキュメント ツールによっても使用されます。
importステートメントのドキュメントを参照してください。
モジュールによって定義されたパブリック名は、モジュールの名前空間で という名前の変数をチェックすることによって決定されます__all__。定義されている場合、そのモジュールによって定義またはインポートされた名前である一連の文字列でなければなりません。で指定された名前__all__はすべてパブリックと見なされ、存在する必要があります。が定義されていない場合__all__、パブリック名のセットには、アンダースコア文字 ( ) で始まらないモジュールの名前空間にあるすべての名前が含まれます'_'。__all__パブリック API 全体を含める必要があります。API の一部ではないアイテム (モジュール内でインポートおよび使用されたライブラリ モジュールなど) を誤ってエクスポートしないようにすることを目的としています。
__init__検査したモジュールは、ほぼ確実に__all__シーケンスを定義します。
関数が後でグローバル名にアクセスする必要がない場合は、モジュールから名前を再度削除することもできます。
del sys
それ以外の場合、IPython オートコンプリートはアンダースコアで始まらないすべての名前を使用します。オートコンプリートは__all__リストを無視しますが、 のような名前は無視します_sys。
numpy.__init__モジュール(バージョン 1.8.0 より前) 自体が、再びグローバル名前空間から名前を削除します。
if __NUMPY_SETUP__:
import sys as _sys
_sys.stderr.write('Running from numpy source directory.\n')
del _sys
しかし、ここでsysはバインドされて_sysおり、削除されていなくても IPython はその名前を無視します。numpyまた__all__、そのモジュールでリストを作成します。
numpyバージョン 1.8.0 以降では、ステートメントimport sysがそのファイルに追加され、IPython はそれをオートコンプリート用に提供します。これは、まだグローバル名前空間の一部であるためです。