__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 はそれをオートコンプリート用に提供します。これは、まだグローバル名前空間の一部であるためです。