__all____all__ — это список, определённый на уровне модуля, который явно контролирует, какие имена экспортируются при выполнении from module import *.
Когда __all__ определён, при wildcard импорте импортируются только имена, указанные в этом списке. Любое имя, не включённое в __all__, рассматривается как приватное и будет проигнорировано.
# mymodule.py
__all__ = ["public_func", "PublicClass"]
def public_func():
pass
def _helper(): # не экспортируется
pass
При выполнении from mymodule import * импортируются только public_func и PublicClass.
__all__Если __all__ не определён, Python по умолчанию экспортирует все имена, которые не начинаются с подчёркивания. Это делает публичный API модуля менее предсказуемым и сложнее поддерживаемым.
__all__ — это хорошая практика для определения чёткого и явного публичного APIfrom module import _helperПеременная __all__ ограничивает доступ к приватным функциям при использовании прямых импортов вроде from module import _helper, предотвращая их импорт.
Новый — ещё не проверен сообществом
Вы