Модули
Модуль — это обычный файл .py. Допустим, есть файл mathutils.py:
PI = 3.14159def circle_area(radius): return PI * radius ** 2Использование из другого файла в той же папке:
import mathutilsprint(mathutils.circle_area(2))Формы импорта
import mathimport math as mfrom math import sqrtfrom math import sqrt, pifrom math import sqrt as rootИмпорт from module import * подтягивает все публичные имена и засоряет пространство имён, поэтому его следует избегать.
Поиск модулей
Интерпретатор ищет модуль по списку sys.path: текущая папка, пути из PYTHONPATH, стандартная библиотека и site-packages.
import sysprint(sys.path)Конструкция __name__
Если файл запускается напрямую, __name__ равно "__main__". При импорте — имени модуля:
def main(): print("запуск")if __name__ == "__main__": main()Это позволяет использовать файл и как модуль, и как программу.
Пакеты
Пакет — папка с модулями:
project/ main.py shop/ __init__.py cart.py prices.pyФайл __init__.py может быть пустым или содержать код инициализации пакета.
from shop import cartfrom shop.prices import get_priceОтносительные импорты
Внутри пакета можно ссылаться на соседние модули:
from . import pricesfrom .prices import get_pricefrom ..common import helpersПолезные модули стандартной библиотеки
| Модуль | Назначение |
|---|---|
os, pathlib | Работа с файловой системой |
sys | Параметры интерпретатора, аргументы командной строки |
math, random, statistics | Математика и случайные числа |
datetime, time | Дата и время |
json, csv | Форматы данных |
re | Регулярные выражения |
collections, itertools, functools | Структуры данных и инструменты |
argparse | Аргументы командной строки |
logging | Журналирование |
unittest | Тестирование |
Пример:
import randomfrom datetime import datetimefrom pathlib import Pathprint(random.randint(1, 10))print(datetime.now().strftime("%Y-%m-%d"))print(Path.cwd())Задания
- Вынесите несколько функций из прошлых уроков в собственный модуль и импортируйте их.
- Создайте пакет из двух модулей и вызовите функцию из одного модуля в другом через относительный импорт.
