ГЛАВА 6. МОДУЛИ В PYTHON

К примеру, вы написали несколько полезных функций, которые часто используете в своих программах. Чтобы к ним быстро обращаться, удобно все эти функции поместить в отдельный файл и загружать их оттуда. В Python такие файлы с набором функций называются модулями. Для того чтобы воспользоваться функциями, которые находятся в этом модуле, его необходимо импортировать с помощью команды import:

Мы загрузили в память стандартный модуль math (содержит набор математических функций), теперь можно обращаться к функциям, находящимся внутри этого модуля. Сила Python в огромном количестве стандартных и полезных модулей. Обратиться к функции модуля (в данном случае для нахождения квадратного корня из 9) можно следующим образом:

Мы указываем имя модуля, точку и имя функции с аргументами. Узнать о функциях, которые содержит модуль, можно через справку:

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

В момент импортирования модуля math создается переменная с именем math:

Функция type показала, что тип данных переменной math – модуль. Переменная math содержит ссылку (адрес) модульного объекта. В этом объекте содержатся ссылки на функции (функциональные объекты):

В момент вызова функции sqrt Python находит переменную math (модуль должен быть предварительно импортирован), просматривает модульный объект, находит функцию sqrt внутри этого модуля и затем выполняет ее.

В Python можно импортировать отдельную функцию из модуля:

Таким образом, Python не будет создавать переменную math, а загрузит в память только функцию sqrt. Теперь вызов функции можно производить, не обращаясь к имени модуля math. Здесь надо быть крайне внимательным. Приведу пример, почему:

Мы создали собственную функцию с именем sqrt, затем вызвали ее и убедились, что она работает. После этого импортировали функцию sqrt из модуля math. Снова вызвали sqrt и видим, что это не наша функция! Ее подменили! Теперь другой пример:

Снова создаем собственную функцию с именем sqrt и вызываем ее. Затем импортируем модуль math и через него вызываем стандартную функцию sqrt. Видим, что корень квадратный считается и наша функция осталась в сохранности. Выводы сделайте самостоятельно.

В самом начале занятий мы вызывали функции для работы с числами, например, abs для нахождения модуля числа. На самом деле, эта функция тоже находится в модуле, который Python загружает в память в момент начала работы. Этот модуль называется __builtins__ (два нижних подчеркивания до и после имени модуля). Если вызывать справку для данного модуля, то увидите, что там огромное количество функций и переменных:

В Python есть полезная функция dir, которая возвращает перечень имен всех функций и переменных, содержащихся в модуле:

Часть из этих функций вы уже знаете, с другими – мы познакомимся чуть позже.


Как называются файлы с набором функций в Python?

Что делает функция dir?