dir()
(これらの回答のほとんどで述べられているように)グローバル関数は使用するコマンドですが、これはパブリック関数と非パブリック関数の両方を一緒にリストします。
たとえば、次のように実行します。
>>> import re
>>> dir(re)
次のような関数/クラスを返します:
'__all__', '_MAXCACHE', '_alphanum_bytes', '_alphanum_str', '_pattern_type', '_pickle', '_subx'
そのうちのいくつかは、一般に、一般的なプログラミングの使用のためのもの(ただし、モジュール自体によって、等DunderAliasesの場合を除いていない__doc__
、__file__
ECT)。このため、それらを公開のものと一緒にリストすることは役に立たない場合があります(これは、Pythonがを使用するときに何を取得するかを知る方法ですfrom module import *
)。
__all__
この問題を解決するために使用でき、モジュール内のすべてのパブリック関数とクラスのリストを返します(アンダースコアで始まらないもの- _
)。参照してください
缶誰かがPythonで__all__説明?の使用のため__all__
。
次に例を示します。
>>> import re
>>> re.__all__
['match', 'fullmatch', 'search', 'sub', 'subn', 'split', 'findall', 'finditer', 'compile', 'purge', 'template', 'escape', 'error', 'A', 'I', 'L', 'M', 'S', 'X', 'U', 'ASCII', 'IGNORECASE', 'LOCALE', 'MULTILINE', 'DOTALL', 'VERBOSE', 'UNICODE']
>>>
アンダースコア付きのすべての関数とクラスが削除され、パブリックとして定義されているためを介して使用できるものだけが残りimport *
ます。
__all__
は常に定義されているわけではないことに注意してください。含まれていない場合AttributeError
は、発生します。
このケースはastモジュールにあります:
>>> import ast
>>> ast.__all__
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: module 'ast' has no attribute '__all__'
>>>