Назад | Python 3 учебник | Вперёд
Каждый раз, когда вы создаёте новый файл *.py, вы создаёте новый модуль. Он может содержать определения функций, переменных, код для инициализации и т. д. Мы можем использовать в своём модуле ресурсы другого модуля, для этого нам нужно его импортировать с помощью оператора import:
1 |
import mymodulename |
Например, попробуем создать простой модуль с парой функций в Spyder 3:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ Created on Sat Apr 13 20:17:21 2019 @author: fedya """ def func1(v1, v2): return v1 - v2; def tripleSum(v1, v2, v3): return v1 + v2 + v3; |
Сохраним его под именем “mymodule.py” в каком-нибудь подкаталоге домашнего каталога пользователя
Попробуем подключить этот модуль в новом файле. Создайте новый файл (Файл -> Создать) в Spyder 3. Туда вставьте следующий код:
1 2 3 4 5 6 7 8 9 10 11 |
#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ Created on Sat Apr 13 20:26:00 2019 @author: fedya """ import mymodule print(mymodule.tripleSum(10, 2, 3)) |
Сохраните его в том же каталоге с именем “main.py”. Как мы видим, сейчас Spyder 3 подчёркивает строчку import mymodule красным, что означает, то здесь он нашёл ошибку. На самом деле он просто не может найти mymodule.
Нам нужно поправить переменную PYTHONPATH. Она используется для поиска модулей Python. Для этого в главном меню выберите Инструменты -> Менеджер PYTHONPATH.

В открывшемся окне добавьте каталог, в котором вы сохранили файл “mymodule.py”.
Теперь попробуйте запустить на выполнение наш “main.py”. В консоли мы увидим число 15.
Что мы на самом деле сделали? Во-первых, мы импортировали наш модуль mymodule. Во-вторых, мы обратились к функции tripleSum из нашего модуля, при этом мы указали имя модуля mymodule перед именем функции. Точно так же можно было обратиться и к функции func1.
Если очень часто обращаться к модулю, то постоянно набирать длинное имя может надоесть. Вы можете при подключении модуля указать для него короткий псевдоним. Вот так:
1 2 3 |
import mymodule as m print(m.tripleSum(10, 2, 3)) |
При желании мы можем импортировать не весь модуль, а только один его член. Например:
1 2 3 |
from mymodule import tripleSum print(tripleSum(10, 2, 3)) |
Мы использовали конструкцию from ... import ... для импорта только функции tripleSum. Обратите внимание, что нам теперь не нужно указывать имя модуля при вызове функции. Такой конструкцией можно с помощью символа «*» импортировать все методы:
1 2 3 |
from mymodule import * print(tripleSum(10, 2, 3)) |