Справочник по Python · модуль 6 · функции и модули
Глава 6.4
Библиотеки и модули
в Python
Готовый код можно подключить к программе и использовать по имени. Так функции распределяют по файлам, а программы собирают из уже созданных частей.
- Категория
- Организация программы
- Уровень
- Начальный
- Связанные темы
- Функции, файлы, имена
- Зачем это знать
- Подключать готовый код и разделять проект на части
§1Модуль и библиотека
Модуль — файл с расширением .py. В нём могут находиться переменные, функции, классы и другой код.
Библиотека — готовый набор кода для определённых задач. Она может состоять из одного модуля или из множества модулей и пакетов. В разговоре эти слова иногда используют как близкие, но они описывают разные размеры структуры.
модуль → один файл .py пакет → папка с модулями библиотека → готовый набор модулей и пакетов
§2Зачем нужны модули
Модули позволяют не хранить всю программу в одном длинном файле и не писать заново уже готовые решения.
- разделять большую программу на понятные части;
- повторно использовать функции в разных файлах;
- подключать инструменты из стандартной библиотеки Python;
- использовать сторонние библиотеки для специальных задач.
§3Подключение через import
Ключевое слово import загружает модуль и создаёт в программе имя, через которое можно обратиться к его содержимому.
import math result = math.sqrt(16) print(result)
4.0
math входит в стандартную библиотеку Python, поэтому отдельно устанавливать его не нужно.
§4Обращение через точку
После обычного импорта объект внутри модуля указывают по схеме модуль.объект.
math.sqrt(16)
│ └─ функция sqrt() внутри модуля
└────── имя модуля
Полное имя показывает происхождение функции. Если в программе встретится math.sqrt(), сразу видно, что sqrt() взята из math.
§5Импорт конкретного объекта
Конструкция from ... import ... добавляет в программу конкретное имя из модуля. После этого имя модуля перед функцией не пишется.
from math import sqrt result = sqrt(25) print(result)
5.0
После import math пишут math.sqrt(). После from math import sqrt пишут просто sqrt().
§6Псевдонимы: as
as задаёт импортированному объекту другое имя. Псевдоним используют для принятого сокращения или для более понятного названия.
import math as m print(m.sqrt(25))
5.0
from math import sqrt as square_root print(square_root(36))
6.0
Для некоторых библиотек существуют общепринятые сокращения, например import numpy as np. Такое сокращение работает только после установки самой библиотеки.
§7Стандартные и сторонние библиотеки
| Вид | Откуда берётся | Примеры |
|---|---|---|
| стандартная библиотека | устанавливается вместе с Python | math, random, datetime |
| сторонняя библиотека | устанавливается отдельно | numpy, requests |
Сторонние библиотеки обычно устанавливают в терминале через менеджер пакетов pip.
python -m pip install numpy
Команда установки не является кодом Python: её вводят в терминале. Перед установкой проверьте название библиотеки и используйте окружение своего проекта.
§8Собственный модуль
Любой созданный вами файл .py может стать модулем. Поместим функцию в один файл, а вызов — в другой.
def rectangle_area(width, height): return width * height
from geometry import rectangle_area area = rectangle_area(5, 3) print(area)
15
Для такого импорта файлы geometry.py и main.py должны находиться в одной папке. Более сложную структуру проекта разберём отдельно.
§9Какой способ импорта выбрать
| Запись | Вызов | Особенность |
|---|---|---|
import math | math.sqrt(16) | хорошо видно происхождение имени |
from math import sqrt | sqrt(16) | короче, если нужен конкретный объект |
import math as m | m.sqrt(16) | используется короткий псевдоним |
from math import sqrt as root | root(16) | объект получает новое имя |
Для начала чаще выбирайте import module: полное имя легче читать и оно реже конфликтует с вашими переменными и функциями.
§10Частые ошибки
| Что написано | Что произойдёт | Как правильно |
|---|---|---|
import math, затем sqrt(16) | NameError: имя sqrt отдельно не создано | math.sqrt(16) |
from math import sqrt, затем math.sqrt(16) | NameError: имя math не создано | sqrt(16) |
| ошибка в названии модуля | ModuleNotFoundError | проверить написание и установку библиотеки |
свой файл назван math.py | он может перекрыть стандартный модуль math | дать своему файлу другое имя |
from math import * | в программу попадёт много имён, их происхождение станет неясным | импортировать модуль или перечислить нужные объекты |
pip install numpy написано в main.py | SyntaxError | выполнить команду в терминале |
§11Проверьте себя
Как вызвать sqrt() после import math?
Через имя модуля и точку: math.sqrt(число).
Чем модуль отличается от библиотеки?
Модуль — отдельный файл .py, а библиотека — готовый набор кода, который может включать несколько модулей и пакетов.
Что делает as?
Назначает импортированному модулю или объекту другое имя в текущей программе.
§12Шпаргалка
import mathmath.sqrt(16)from math import sqrtsqrt(16)import math as mm.sqrt(16)from math import sqrt as rootИтог главы
Модуль — файл Python с готовым кодом. import подключает модуль, точка выбирает объект внутри него, from ... import ... импортирует конкретное имя, а as задаёт псевдоним. Стандартные модули поставляются с Python, сторонние библиотеки устанавливаются отдельно.