Для глобальных функций dir()
- это команда для использования (как упоминалось в большинстве этих ответов), однако в ней перечислены как публичные функции, так и непубличные функции.
Например, работает:
>>> import re
>>> dir(re)
Возвращает функции / классы, такие как:
'__all__', '_MAXCACHE', '_alphanum_bytes', '_alphanum_str', '_pattern_type', '_pickle', '_subx'
Некоторые из них, как правило, не предназначены для общего использования в программировании (но самим модулем, за исключением случаев с DunderAliases, таких как __doc__
, __file__
ect). По этой причине может быть бесполезно перечислять их с общедоступными (именно так Python знает, что получить при использовании from module import *
).
__all__
может использоваться для решения этой проблемы, он возвращает список всех открытых функций и классов в модуле (те, которые не начинаются с подчеркивания - _
). Увидеть
Может ли кто-нибудь объяснить __all__ в Python? для использования __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__'
>>>