Введение
Модули Python — это удобный способ инкапсуляции и организации многократно используемого кода. Если вы обнаружите, что копируете и вставляете один и тот же код в несколько сценариев или проектов, это хороший признак того, что вам следует рассмотреть возможность создания собственного модуля. В этой статье мы познакомим вас с процессом создания и использования вашего собственного модуля Python.
Поймите основы
Модуль в Python — это просто файл, содержащий определения и операторы Python. Имя файла — это имя модуля, за которым следует расширение .py. Например, модуль с именем mymodule будет сохранен как mymodule.py.
Создайте форму
В нашем примере предположим, что у вас есть математические функции, которые вы хотите повторно использовать в проектах. Таким образом, вы можете записать их в один файл, а затем повторно использовать в качестве модуля в других скриптах Python.
Например, ниже я создал скрипт Python mymath.py, который включает в себя функции сложения, вычитания, умножения и деления.
# mymath.py
def add(x, y):
return x + y
def subtract(x, y):
return x - y
def multiply(x, y):
return x * y
def divide(x, y):
if y == 0:
return "Undefined (division by zero)"
return x /y
Здесь мы создали простой модуль mymath.py с четырьмя основными арифметическими функциями.
Используйте форму
Теперь давайте посмотрим, как мы можем использовать этот пользовательский модуль в другом скрипте Python. Здесь мы можем использовать оператор импорта с именем файла сценария модуля Python без расширения. См. пример ниже:
# main.py
# Importing our custom module
import mymath
# Using functions from our module
print(mymath.add(5, 3))
print(mymath.subtract(5, 3))
print(mymath.multiply(5, 3))
print(mymath.divide(5, 3))
Примечание. Убедитесь, что main.py и mymath.py находятся в одном каталоге или что mymath.py находится в каталоге, который находится в sys.path Python.
Использование оператора from...import
В некоторых случаях вам может потребоваться использовать некоторые функции только из модуля. Таким образом, вместо импорта всего модуля вы также можете импортировать определенные функции:
from mymath import add, subtract
print(add(5, 3))
print(subtract(5, 3))
Использование __name__
В более крупных модулях вам может потребоваться протестировать свой код. Атрибут __name__ позволяет вам контролировать, будет ли модуль запускаться напрямую или импортироваться где-то еще:
# mymath.py
def add(x, y):
#... (same as above)
#... other functions...
if __name__ == "__main__":
print("Running tests for mymath module")
assert add(2, 3) == 5
#... more tests...
Организуйте несколько модулей с помощью пакетов
Если у вас есть несколько связанных модулей, вы можете объединить их в один пакет. Пакет — это просто способ собрать связанные модули вместе в единой иерархии каталогов.
Например, чтобы создать пакет с именем mypackage:
Создайте каталог с именем mypackage.
mkdir mypackage
Добавьте в каталог пустой файл с именем __init__.py (это заставит Python рассматривать каталог как пакет или подпакет).
touch./mypackage/__init__.py
Поместите соответствующие файлы модуля в каталог mypackage.
Затем вы можете импортировать модули из этого пакета, используя:
from mypackage import mymath
Развертывание формы
Если вы считаете, что ваш модуль может принести пользу более широкому сообществу Python, рассмотрите возможность его распространения через индекс пакетов Python (PyPI). Сначала вы упакуете его с помощью setuptools, а затем сможете распространять с помощью шпагата.
Заключение
Создание и использование пользовательских модулей Python — это важный навык, особенно когда ваши проекты становятся все более сложными. Модули помогают разбирать сложные системы, способствуют повторному использованию кода и поддерживают чистоту кодовой базы. Продолжая свое знакомство с Python, думайте о модулях как о своем надежном наборе инструментов, всегда готовом помочь вам создавать великие вещи.