Теперь пришло время создать свой модуль
Создадим файл mymodule.py, в которой определим какие-нибудь функции:
def hello(): print('Hello, world!') def fib(n): a = b = 1 for i in range(n - 2): a, b = b, a + b return b
Теперь в этой же папке создадим другой файл, например, main.py:
import mymodule mymodule.hello() print(mymodule.fib(10))
Выведет:
Hello, world! 55
Поздравляю! Вы сделали свой модуль! Напоследок отвечу ещё на пару вопросов, связанных с созданием модулей:
Обратите внимание, мы указываем имя файла нашего модуля без расширения py. То есть, имя файла – это и есть имя модуля
Как назвать модуль?
Помните, что вы (или другие люди) будут его импортировать и использовать в качестве переменной. Модуль нельзя именовать также, как и ключевое слово (их список можно посмотреть тут). Также имена модулей нельзя начинать с цифры. И не стоит называть модуль также, как какую-либо из встроенных функций. То есть, конечно, можно, но это создаст большие неудобства при его последующем использовании.
Куда поместить модуль?
Туда, где его потом можно будет найти. Пути поиска модулей указаны в переменной sys.path. В него включены текущая директория (то есть модуль можно оставить в папке с основной программой), а также директории, в которых установлен python. Кроме того, переменную sys.path можно изменять вручную, что позволяет положить модуль в любое удобное для вас место (главное, не забыть в главной программе модифицировать sys.path).
Можно ли использовать модуль как самостоятельную программу?
Можно. Однако надо помнить, что при импортировании модуля его код выполняется полностью, то есть, если программа что-то печатает, то при её импортировании это будет напечатано.
Этого можно избежать, если проверять, запущен ли скрипт как программа, или импортирован.
Это можно сделать с помощью переменной __name__, которая определена в любой программе, и равна “__main__”, если скрипт запущен в качестве главной программы, и имя, если он импортирован.
Например, mymodule.py может выглядеть вот так:
def hello(): print('Hello, world!') def fib(n): a = b = 1 for i in range(n - 2): a, b = b, a + b return b if __name__ == "__main__": hello() for i in range(10): print(fib(i))
Зачем нужны модули?
Дело в том, что при создании крупных проектов стараются предельно упрощать процесс разработки программ. И один из методов здесь – это декомпозиция большой задачи на множество более мелких, которые, как правило, можно реализовать независимо друг от друга. Представьте, например, что нам нужно создать программу по распознаванию лиц и разработчики решили для этого использовать нейронную сеть. Тогда программу в целом можно (упрощенно) представить следующими модулями.
При этом каждый модуль может включать (подключать) другие вспомогательные модули, образуя сложную иерархическую архитектуру программы.
Кроме того, модули бывают полезны, когда предполагается часто использовать определенный функционал в своих проектах. Не случайно язык Python поставляется с набором стандартных модулей, таких как math, random, sys и другие. Они значительно облегчают разработку самых разных программ.
Полезная ссылка