Модуль 6 · Функции и модули

Справочник по Python · модуль 6 · функции и модули

Глава 6.4

6.4

Библиотеки и модули
в Python

Готовый код можно подключить к программе и использовать по имени. Так функции распределяют по файлам, а программы собирают из уже созданных частей.

Категория
Организация программы
Уровень
Начальный
Связанные темы
Функции, файлы, имена
Зачем это знать
Подключать готовый код и разделять проект на части

§1Модуль и библиотека

Модуль — файл с расширением .py. В нём могут находиться переменные, функции, классы и другой код.

Библиотека — готовый набор кода для определённых задач. Она может состоять из одного модуля или из множества модулей и пакетов. В разговоре эти слова иногда используют как близкие, но они описывают разные размеры структуры.

Схемаот файла к набору инструментов
модуль     → один файл .py
пакет      → папка с модулями
библиотека → готовый набор модулей и пакетов

§2Зачем нужны модули

Модули позволяют не хранить всю программу в одном длинном файле и не писать заново уже готовые решения.

  • разделять большую программу на понятные части;
  • повторно использовать функции в разных файлах;
  • подключать инструменты из стандартной библиотеки Python;
  • использовать сторонние библиотеки для специальных задач.

§3Подключение через import

Ключевое слово import загружает модуль и создаёт в программе имя, через которое можно обратиться к его содержимому.

main.pyмодуль math
import math

result = math.sqrt(16)
print(result)
Выводквадратный корень
4.0

math входит в стандартную библиотеку Python, поэтому отдельно устанавливать его не нужно.

§4Обращение через точку

После обычного импорта объект внутри модуля указывают по схеме модуль.объект.

Pythonчитаем слева направо
math.sqrt(16)
│    └─ функция sqrt() внутри модуля
└────── имя модуля

Полное имя показывает происхождение функции. Если в программе встретится math.sqrt(), сразу видно, что sqrt() взята из math.

§5Импорт конкретного объекта

Конструкция from ... import ... добавляет в программу конкретное имя из модуля. После этого имя модуля перед функцией не пишется.

main.pyтолько функция sqrt()
from math import sqrt

result = sqrt(25)
print(result)
Выводбез префикса math.
5.0
Два разных способа

После import math пишут math.sqrt(). После from math import sqrt пишут просто sqrt().

§6Псевдонимы: as

as задаёт импортированному объекту другое имя. Псевдоним используют для принятого сокращения или для более понятного названия.

main.pyпсевдоним модуля
import math as m

print(m.sqrt(25))
Выводm означает math
5.0
main.pyпсевдоним функции
from math import sqrt as square_root

print(square_root(36))
Выводновое имя функции
6.0

Для некоторых библиотек существуют общепринятые сокращения, например import numpy as np. Такое сокращение работает только после установки самой библиотеки.

§7Стандартные и сторонние библиотеки

ВидОткуда берётсяПримеры
стандартная библиотекаустанавливается вместе с Pythonmath, random, datetime
сторонняя библиотекаустанавливается отдельноnumpy, requests

Сторонние библиотеки обычно устанавливают в терминале через менеджер пакетов pip.

Терминалпример команды установки
python -m pip install numpy

Команда установки не является кодом Python: её вводят в терминале. Перед установкой проверьте название библиотеки и используйте окружение своего проекта.

§8Собственный модуль

Любой созданный вами файл .py может стать модулем. Поместим функцию в один файл, а вызов — в другой.

geometry.pyмодуль с функцией
def rectangle_area(width, height):
    return width * height
main.pyоба файла лежат рядом
from geometry import rectangle_area

area = rectangle_area(5, 3)
print(area)
Выводзапуск main.py
15

Для такого импорта файлы geometry.py и main.py должны находиться в одной папке. Более сложную структуру проекта разберём отдельно.

§9Какой способ импорта выбрать

ЗаписьВызовОсобенность
import mathmath.sqrt(16)хорошо видно происхождение имени
from math import sqrtsqrt(16)короче, если нужен конкретный объект
import math as mm.sqrt(16)используется короткий псевдоним
from math import sqrt as rootroot(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.pySyntaxErrorвыполнить команду в терминале

§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, сторонние библиотеки устанавливаются отдельно.

Глава 6.4 · Библиотеки и модули · Справочник по Python Автор: Макаров Максим Николаевич