__all__ в модуле, чтобы явно указать список публичных имен (переменных, функций, классов), которые будут экспортироваться при импорте модуля с использованием from module import *.  Если __all__ не определен, по умолчанию экспортируются все имена, не начинающиеся с подчеркивания (_).  Определение __all__ улучшает читаемость кода и предотвращает случайный экспорт внутренних компонентов.
__all__ - это список строк, определяющий публичный интерфейс модуля. Он используется, когда из модуля делается импорт с использованием from module import *. Если __all__ определен, то при такой форме импорта будут импортированы только имена, перечисленные в этом списке.
Зачем использовать __all__?
__all__, остается неизменным.Как использовать __all__:
__all__ в начале модуля: В начале файла модуля присвойте переменной __all__ список строк, содержащий имена, которые вы хотите сделать публичными.__all__ должен содержать только строки, представляющие имена функций, классов, переменных и т.д., которые вы хотите экспортировать.Пример:
  # my_module.py
  __all__ = ['public_function', 'MyPublicClass']
  def public_function(x):
      """Эта функция является частью публичного API."""
      return x * 2
  class MyPublicClass:
      """Этот класс является частью публичного API."""
      def __init__(self, value):
          self.value = value
  def _private_function():  # Функция с префиксом "_" - обычно считается приватной
      """Эта функция не должна быть частью публичного API."""
      pass
  MY_PUBLIC_CONSTANT = 10
  Использование:
  # main.py
  from my_module import *
  print(public_function(5))   # Работает
  my_object = MyPublicClass(20)  # Работает
  print(MY_PUBLIC_CONSTANT) # Будет работать, т.к. не был указан в __all__
  # _private_function() # Вызовет NameError, так как '_private_function' не была экспортирована.
  Важно:
__all__ не определен, то при from module import * будут импортированы все имена, которые не начинаются с символа подчеркивания (_).__all__, то импортируются только те имена, которые явно указаны в этом списке, даже если другие имена не начинаются с _.В заключение, использование __all__ позволяет вам явно контролировать публичный API вашего модуля, что приводит к более поддерживаемому, читаемому и безопасному коду.