Для чего нужен __init__.py файл и в каких случаях использовать __all__?

Есть директория содержащая следующие поддиректории введите сюда описание изображения

В ней содержится файл__init__,

from .errors import dp
from .users import dp

__all__ = ["dp"]

в обеих указанных в файле директориях есть такой же__init__ файл с таким же содержимым (ниже содержимое __init__файла директории users)

from .help import dp
from .start import dp

from .menu_handlers import dp
from .echo import dp

__all__ = ["dp"]

Для чего здесь используется__all__ и на что он влияет?

В другой директории в файле__init__ просто импортируется файл из той же директории

from . import choice_buttons

Что происходит в этом случае и на что это влияет? Так же, по каким правилам импортируются модули из верхних директорий(директорий содержащих директорию) нужно ли дополнительно прописывать что то в поддиректории при импорте из верхних директорий ?

Если подытожить, у меня есть 3 вопроса:

  • Для чего нужен файл init и как в нем используется all?

    Что происходит, когда в файл init просто импортируются файлы из той же директории?

    Есть ли особые правила для импорта из верхних директорий ?


Ответы (1 шт):

Автор решения: user2240578

В __all__ перечислены имена переменных, которые будут импортированы в область видимости модуля при вызове from package import *.

→ Ссылка