Для глобальних функцій dir()
- це команда для використання (як згадується в більшості цих відповідей), однак тут перераховані як загальнодоступні, так і непублічні функції разом.
Наприклад, працює:
>>> import re
>>> dir(re)
Повертає функції / класи типу:
'__all__', '_MAXCACHE', '_alphanum_bytes', '_alphanum_str', '_pattern_type', '_pickle', '_subx'
Деякі з них, як правило, не призначені для загального використання в програмуванні (але самим модулем, за винятком випадку, наприклад __doc__
, DunderAliases , __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__'
>>>