Модули Python с подмодулями и функциями

у меня был вопрос о том, как работают библиотеки, такие как numpy. Когда я импортирую numpy, Мне предоставляется доступ к множеству встроенных классов, функций и констант, таких как numpy.array, numpy.sqrt etc.

но внутри numpy есть дополнительные подмодули, такие как numpy.тестирование.

как это сделать? В моем ограниченном опыте модули с подмодулями-это просто папки с __init__.py file, в то время как модули с функциями/классами являются фактическими файлами python. Как создать модуль "папка", которая также имеет функции/классы?

1 ответов


папка с .py и __init__.py называется package. Один из этих файлов, содержащих классы и функции-это module. Вложенность папок может дать вам подпакеты.

так, например, если бы у меня была следующая структура:

  mypackage
     __init__.py
     module_a.py
     module_b.py
        mysubpackage
             __init__.py
             module_c.py
             module_d.py

я мог бы импортировать mypackage.module_a или mypackage.mysubpacakge.module_c и так далее.

вы также можете добавить функции в mypackage (как функции numpy, которые вы упомянули), поместив этот код в __init__.py. Хотя это обычно считается уродливым.

если вы посмотрите на библиотеки numpy это __init__.py вы увидите там много кода - многое из этого определяет эти классы и функции верхнего уровня. The __init__.py код-это первое, что выполняется при загрузке пакета.