Распространённые модули
- Встроенные
math
математические элементарные функцииsys
доступ к параметрам и функциям операционной системыos
инструменты для работы с операционной системой и файловой системойcollections
расширение стандартных контейнеров pythonitertools
инструменты для итерирования по элементам контейнеровdatetime
работа с датой и временем
- Устанавливаемые (
pip3 install имя_модуля
)matplotlib
визуализация данныхpandas
таблицы и данныеnumpy
продвинутая математикаscipy
ещё более продвинутая математикаsympy
символьная математика
Подключение модулей
Примечание: для включения чего-либо под другим именем в конце добавляется as другое_имя
- Подключение модуля:
import math
в пространство имён добавляется модуль math - Подключение функции модуля:
from math import cos
в пространство имён добавляется функция math.cos как cos - Ленивое подключение модуля:
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))
Окружение
- При подключении модуля
имя-модуля
интерперетатор Python проверяет файл/каталог с его именем в путяхsys.path
- Среди путей есть пустая строка проверка модуля в том же каталоге, что и исполняемый Python-файл
- Словарь
sys.module
содержит информацию о доступных модулях Python- Ключи словаря полные имена модулей
- О невстроенных модулях есть информация по расположению модуля в
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()