Модуль — файл с расширением .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 находится здесь.
Попробуйте импортировать модуль 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(<имя модуля>)
Рассмотрим, на примере нашего модуля:
import mymodule
print(dir(mymodule))
#['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'hello', 'my_max', 'pi']
Здесь мы видим все импортированные из модуля объекты, наши функции, переменная и служебные переменные.
Содержание: