Распространённые модули
  1. Встроенные
    1. math математические элементарные функции
    2. sys доступ к параметрам и функциям операционной системы
    3. os инструменты для работы с операционной системой и файловой системой
    4. collections расширение стандартных контейнеров python
    5. itertools инструменты для итерирования по элементам контейнеров
    6. datetime работа с датой и временем
  2. Устанавливаемые (pip3 install имя_модуля)
    1. matplotlib визуализация данных
    2. pandas таблицы и данные
    3. numpy продвинутая математика
    4. scipy ещё более продвинутая математика
    5. sympy символьная математика
Подключение модулей

Примечание: для включения чего-либо под другим именем в конце добавляется as другое_имя

  1. Подключение модуля: import math в пространство имён добавляется модуль math
  2. Подключение функции модуля: from math import cos в пространство имён добавляется функция math.cos как cos
  3. Ленивое подключение модуля: from math import * (starred import) в пространство имён добавляются все функции, константы и классы модуля math
import math
import itertools as it
 
a = math.sin(math.pi / 6)
print(a)
 
b = it.compress("abcd", [1,0,1,1])
print(list(b))
Окружение
  1. При подключении модуля имя-модуля интерперетатор Python проверяет файл/каталог с его именем в путях sys.path
    1. Среди путей есть пустая строка проверка модуля в том же каталоге, что и исполняемый Python-файл
  2. Словарь sys.module содержит информацию о доступных модулях Python
    1. Ключи словаря полные имена модулей
    2. О невстроенных модулях есть информация по расположению модуля в sys.modules[полное_имя_модуля].__path__
import sys
 
print(sys.version)  # Какой интерпретатор Python
 
# В какие пути смотрит интерпретатор
for p in sys.path:
    print(p)
 
# Проверка того, что модуль загружен
if полное_имя_модуля in sys.module.keys():
	print(полное_имя_модуля, "загружен")
Собственные модули

Тривиальный модуль файл модуль.py, содержащий переменные / функции / классы. Его можно импортировать в другом коде:

import модуль

При распределении содержимого модуля по файлам, появляется иерархическая структура. Пример такой структуры:

корневой каталог/
├── название_модуля/
|   ├── data/
|       └── ...             файлы
|   ├── __init__.py
|   ├── подмодуль_1.py
|   └── подмодуль_2.py
├── test/
|   └── ...                 тесты
├── ReadMe.md               описание модуля

Тогда, если импортировать название_модуля, то запустится файл __init__.py :

# __init__.py
"""
Краткое описание модуля
"""
 
# Здесь можно вручную добавить пути импорта подмодулей в файле, который импортирует модуль
import sys
sys.path.insert(1, f"{sys.path[0]}/название_модуля/.")
sys.path.insert(1, f"{sys.path[0]}/название_модуля")
 
# Далее, имортируются подмодули
from название_модуля.подмодуль_1 import *
from название_модуля.подмодуль_2 import *

Если один подмодуль использует функции другого подмодуля, используется абсолютный импорт:

# подмодуль_1.py
 
def func1():
	from название_модуля.подмодуль_2 import func2
	a = func2()