Автор оригинала: Pankaj Kumar.
Итак, вы изучаете Python уже довольно давно. Как новичок, это обычная практика-иметь однофайловую программу, в которой весь код организован с использованием классов и функций .
Но по мере того, как вы становитесь более продвинутыми, а ваш код становится более сложным, вам нужно научиться использовать несколько файлов.
Что такое модуль Python?
Модуль Python-это файл Python, содержащий классы, методы или переменные, которые вы хотите включить в свое приложение.
Распространенной практикой, которую вы будете наблюдать среди продвинутых приложений Python, является многократное использование функций или классов, объединенных в файл, а затем импортированных в другие части программы.
Это называется модулем Python. Затем этот модуль можно импортировать, а переменные и функции можно повторно использовать несколько раз, не объявляя и не создавая их каждый раз.
Как создать модуль Python?
Это просто, но мы разберем его на небольшие фрагменты, чтобы вы поняли его и смогли применить в реальных сценариях.
1. Создайте Файл, содержащий метод
Сначала мы создадим базовый метод, который добавляет два числа, которые он принимает в качестве параметров.
name = "AskPython" def add(num1, num2): return num1 + num2
Это наш модуль. Приведенный выше код-это просто метод, который возвращает сумму двух чисел, которые ему передаются. Сохраните приведенный выше код как adder.py
и мы перейдем к следующему шагу.
2. Создайте Основной файл для импорта модуля
Наш следующий шаг – импортировать пользовательские модули python в нашу программу. Теперь это точно так же, как импорт любого другого модуля.
Единственное отличие заключается в том, что файл модуля находится локально, а не в системном пути.
import adder nums = adder.add(5, 10) print(nums)
В приведенном выше примере я импортировал наш файл “сумматор”. Вам не нужно добавлять расширение “.py” при импорте.
3. Импорт Только Одной Функции
Предположим, в нашем модуле у нас было несколько функций, выполняющих несколько задач. Но в программе, в которую мы импортируем модуль, нам нужна была только одна из этих функций. Импорт всего модуля был бы ненужным.
В этом случае мы можем использовать from
и import
вместе.
from adder import add nums = add(5, 10) print(nums)
Как вы можете видеть, поскольку мы импортируем определенную функцию, Python позволяет нам использовать функцию так, как если бы она была родной для файла, без необходимости ссылаться на нее с именем модуля.
4. Использование Переменных Из Нашего Модуля
Возможно, вы заметили две переменные в нашем модуле. Мы добавили их, чтобы продемонстрировать, как переменные могут быть напрямую импортированы из модуля с сохранением их значений.
import adder nums = adder.add(5, 10) print(nums) print(adder.name)
Импорт Модулей Из Разных Каталогов
Вам не нужно хранить модуль в той же папке, что и ваш основной файл. Это было бы очень неудобно, если бы было много файлов.
Кроме того, если вы импортируете модуль в другую программу, будет трудно использовать модуль.
Вместо этого вы можете организовать модули в папки и по-прежнему импортировать их таким же образом, как и раньше. Нам просто нужно будет внести небольшое изменение в инструкцию импорта, и все остальное будет работать нормально.
Существует несколько способов импорта модулей в нашу программу, которые не находятся в корневом каталоге. Давайте начнем с самых простых.
1. Импорт, указав Имя папки
Обозначение dot или from..import
, которое мы использовали выше, можно использовать для импорта модулей, расположенных в каталоге. Давайте разместим наши “adder.py” модуль в каталоге с именем modules .
import modules.adder as adder nums = adder.add(5, 10) print(nums) print(adder.name)
В этом примере мы переименовали имя нашего модуля из “modules.adder” в “adder”, используя as .
Причина этого заключается в том, что без переименования нам придется указывать “modules.adder.add(5,10)” и так далее каждый раз, когда нам нужно вызвать функцию из модуля.
Нам не нужно переименовывать модуль в инструкции import
. Мы также можем создать переменную позже в программе, которая содержит имя модуля, и использовать переменную для вызова функций внутри модуля.
Нам не нужно переименовывать модуль в инструкции || import||. Мы также можем создать переменную позже в программе, которая содержит имя модуля, и использовать переменную для вызова функций внутри модуля.
Это тоже будет работать, но объявление нового имени прямо в начале программы улучшает читаемость кода, облегчая работу следующему программисту, который работает над вашим фрагментом кода.
Другой способ-использовать from..import . Это избавляет нас от переименования модулей для использования в программе. Единственное изменение, которое мне нужно будет внести в команду импорта, – это использовать из сумматора импорта модулей
from modules import adder nums = adder.add(5, 10) print(nums) print(adder.name)
2. Добавьте Путь к sys.path
При импорте модулей Python сначала просматривает предопределенные пути, чтобы найти модуль, соответствующий имени. Первый каталог, в который он заглядывает, – это текущий каталог, после чего он перемещается в другие перечисленные каталоги.
Давайте распечатаем sys.path и посмотрим, какие пути ищет Python.
import sys print(sys.path)
Приведенный выше вывод генерируется на компьютере с Linux. Если вы используете компьютер с Windows, вы получите другой список путей.
Поскольку sys.path-это список Python, мы можем добавить к нему пути.
import sys sys.path.append("modules") import adder nums = adder.add(5, 10) print(nums) print(adder.name)
Мы импортировали модуль sys и добавили к нему каталог “модули”. Поэтому в любой момент, когда вам нужно импортировать модуль в каталог modules в этой программе, вы можете просто указать имя, и вы должны быть готовы начать работу.
3. Обеспечение доступности Модуля в масштабах всей системы
Мы распечатали sys.path в приведенном выше примере. Мы знаем, что Python будет просматривать эти каталоги по умолчанию независимо от того, где находится ваш код.
Если мы переместим наш модуль в один из этих каталогов, вы легко получите доступ к модулю из любой программы, которую вы создадите на своем компьютере в будущем.
Обратите внимание, что при переносе программы в другую систему вам потребуется скопировать модуль вместе с ней. Поэтому для программных модулей лучше всего организовать их в папках в родительском каталоге и импортировать оттуда.
Вывод
Теперь вы должны иметь возможность создавать собственные модули на Python и писать многофайловые программы. Помните, что организация кода в нескольких файлах с использованием классов является гораздо лучшим вариантом для повторного использования кода.
Многие функции, которые вам нужны сейчас, могут быть полезны и в будущем приложении, и эти отдельные модули, которые вы создали, просто нужно будет импортировать, экономя часы работы в случае продвинутых приложений.