Модуль — файл с расширением .py, который содержит код на языке Python.
А стандартный (встроенный) модуль — скомпилированный модуль, который написан на Си и встроен в интерпретатор Python.
Здесь мы разберемся, как импортировать и свои модули, и стандартные модули в свою программу. Начнем с импорта стандартных модулей.
Импорт модуля из стандартной библиотеки
Для того, чтобы подключить модуль нужно прописать ключевое слово import и далее название модуля (или название нескольких модулей через запятую):
import <модуль1>, <модуль2>, …, <модульN>
Список и описание всех стандартных модулей и библиотек можно найти в официальной документации Python.
После того, как мы импортировали модуль, его имя становится переменной и с его помощью мы можем обратиться к функциям модуля. Синтаксис будет выглядеть следующим образом:
<название модуля>.<название функции>
Рассмотрим в качестве примера импорт и работу с функциями стандартного модуля math
:
import math print(math.pi) print(math.cos(1)) #3.141592653589793 #0.5403023058681397
Мы импортировали модуль math
и вывели переменную pi
, обратившись к этой переменной модуля math
с помощью math.pi
и далее вывели косинус 1 в радианах, точно также обратившись к функции cos
с помощью math.cos(1)
.
Для того, чтобы узнать какие функции и переменные есть у стандартных модулей Python, переходим по ссылке выше, находим нужный модуль, переходим на него и читаем документацию.
К примеру, документация модуля math находится здесь.
Дзен в Python
Попробуйте импортировать модуль this
:
import this
И увидите The Zen of Python, by Tim Peters)
Присвоение произвольного имени модулю
Если нужно по какой-либо причине изменить имя импортированного модуля, то это можно сделать с помощью такого синтаксиса:
import <название модуля> as <новое звание модуля>
Пример:
import math as m print(m.pi) print(m.cos(1)) #3.141592653589793 #0.5403023058681397
Теперь мы обращаемся к функциям модуля через переменную m
, если обратимся по старому, то будет ошибка:
import math as m print(math.pi) print(math.cos(1)) #NameError: name 'math' is not defined
Импорт определенных объектов из модуля
Если мы пишем import <модуль>
, то в нашу программу импортируются все функции и объекты, которые есть в модуле, но иногда этого не нужно. Мы можем импортировать только те объекты, которые нужны с помощью ключевого слова from
.
Синтаксис выглядит следующим образом:
from <название модуля> import <объект>
Или так, если нужно импортировать несколько объектов:
from <название модуля> import <объект1>, <объект2>
Так как мы импортируем конкретные объекты, то обращаться к ним можно напрямую (без модуль.
).
Например, импортируем из модуля math
только pi
и e
:
from math import pi, e print(pi) print(e) #3.141592653589793 #2.718281828459045
Также мы можем изменить имя объекта, задав ему псевдоним с помощью ключевого слова as
:
from math import pi as my_pi, e as my_e print(my_pi) print(my_e) #3.141592653589793 #2.718281828459045
С помощью синтаксиса:
from <название модуля> import *
Мы можем импортировать все объекты из модуля.
from math import * print(pi) print(e) print(cos(1)) #3.141592653589793 #2.718281828459045 #0.5403023058681397
Однако, это не самая лучшая идея, т.к. может произойти конфликт имен переменных вашей программы, и переменных импортированных из модуля.
Лучше всегда стараться импортировать только, что будет использоваться в вашей программе.
Создание и импорт своего модуля
Как импортируются стандартные модули разобрались, теперь давайте попробуем сделать что-нибудь свое.
Давайте создадим файл (который и будет нашим модулем) mymodule.py
в котором напишем, например, такие функции и добавим переменную:
pi = 3.14 def hello(): print('Hello World!') def my_max(a, b): return a if(a > b) else b
Здесь мы определили свою переменную pi
, функцию hello
, которая просто выводит текст Hello World!
и функцию my_max
, которая возвращает максимальное число из двух полученных чисел.
И в той же папке создадим файл main.py
, который будет нашей основной программой для импорта модуля.
В main.py
мы импортируем наш модуль и выполним функции из модуля:
import mymodule print(mymodule.pi) mymodule.hello() print(mymodule.my_max(1, 10)) #3.14 #Hello World! #10
В итоге мы получили то, что ожидали, из нашего модуля мы вывели переменную pi
, функцию hello
и нашли максимальное число с помощью функции my_max
.
Точно так же, как и со стандартными модулями, мы можем импортировать только нужные функции из модуля, создать псевдоним и т.п.:
from mymodule import hello hello() #Hello World!
import mymodule as my print(my.pi) my.hello() print(my.my_max(1, 10)) #3.14 #Hello World! #10
Импорт своего модуля из другой папки
Если вы хотите разместить модуль в другой папке, т.е. не в той же самой, где лежит основная программа, в которую будет совершать импорт, то нужно будет указать название этой папки при импорте.
Например, создадим рядом с нашей программой main.py
папку mod
, в которую поместим наш модуль mymodule.py
, т.е. структура будет следующей:
main.py /mod/mymodule.py
Работать с модулем нужно будет следующим образом, в файле main.py
:
import mod.mymodule print(mod.mymodule.pi) mod.mymodule.hello() print(mod.mymodule.my_max(1, 10)) #3.14 #Hello World! #10
Функция dir(<модуль>)
Эта функция очень полезна, когда вам нужно понять, какие объекты импортируются из модуля.
Синтаксис функции:
dir(<имя модуля>)
Рассмотрим, на примере нашего модуля:
import mymodule print(dir(mymodule)) #['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'hello', 'my_max', 'pi']
Здесь мы видим все импортированные из модуля объекты, наши функции, переменная и служебные переменные.