Содержание[Скрывать][Показывать]
Эта лекция будет посвящена модулям и пакетам Python.
Это способ организовать ваш код в виде файлов, и они действительно важны, если вы собираетесь создавать веб-приложения с помощью Python.
Модули
Модуль в Python — это, по сути, файл с некоторым кодом Python, который мы используем для организации нашего кода в файлы. Думайте об этом как о отделах в супермаркете. Когда вы идете в супермаркет, есть разные отделы для фруктов, овощей, чистящих средств и т. д. Вы не видите один отдел со всеми продуктами.
Та же концепция в программировании. Вместо того, чтобы писать весь наш код со всеми функциями и классами в main.py, мы разбиваем наш код на несколько файлов. Каждый файл называется модулем. Благодаря этому наш код не только лучше организован и структурирован, но также у нас есть возможность повторно использовать наш код. Давайте посмотрим на это на примере.
Давайте определим две функции для преобразования веса из фунтов в килограммы и наоборот.
def lbs_to_kg(weight):
return weight * 0.45
def kg_to_lbs(weight):
return weight / 0.45
Теперь мы можем взять эти две функции и поместить их в отдельный модуль под названием «конвертеры», а затем импортировать его в любую программу, которой нужны эти функции конвертера. Позвольте мне показать вам, как это сделать.
Давайте откроем панель нашего проекта, щелкните проект правой кнопкой мыши и добавим новый файл. Мы собираемся назвать этот файл «Converters.py».
Теперь скопируйте код из файла по умолчанию и вставьте его в «Converters.py».
Благодаря этому мы очистили наш основной модуль, и он не перегружен различными функциями. По мере того, как мы пишем больше функций с классами, мы помещаем их в соответствующие им модули. Модуль должен содержать все связанные функции и классы. Теперь мы хотим импортировать модуль конвертеров в наш модуль приложения. Для этого напишите import converters
сверху без расширения «.py».
Мы можем получить доступ к членам модуля, используя оператор точки, аналогичный методам.
Переведем 70 кг в фунты:
Существует также другой синтаксис для импорта модулей. Вместо того, чтобы импортировать весь модуль, мы можем импортировать определенные функции из этого модуля. Мы можем ввести from Converters import
и нажмите «control + пробел», чтобы отобразить список доступных функций. При этом мы можем напрямую вызвать эту функцию.
Упражнение
Вот ваше упражнение.
Это связано с упражнением из лекции, где мы обсуждали «для петель», где мы написали программу, чтобы узнать наибольшее число из списка
numbers = [8, 3, 6, 10, 5]
max = numbers[0]
for number in numbers:
if number > max:
max = number
print(max)
Этот код в настоящее время не имеет организации. У нас нет никаких функций или модулей, и программа написана в одном файле. Это нормально для небольших программ, но по мере роста ваших программ вам необходимо правильно организовывать свой код в классы и модули. Поэтому в рамках этого упражнения я хочу, чтобы вы написали функцию, назовите ее find_max
. Эта функция должна принимать список и возвращать наибольшее число в этом списке. После этого поместите эту функцию в отдельный модуль, извлеките ее отсюда и поместите в модуль с именем utils
. Этот модуль должен содержать кучу служебных функций. Импортировать utils
модуль в текущий модуль и вызвать find_max
функция. Наконец, получите результат и распечатайте его на терминале.
Это упражнение немного сложное, но легко выполнимое.
Решения
Начните с определения функции find_max
и добавьте параметр с именем numbers. Внутри этой функции напишите алгоритм поиска наибольшего числа в списке.
def find_max(numbers):
max = numbers[0]
for number in numbers:
if number > max:
max = number
return max
Сохраните этот код в файле «utils.py» как модуль.
Вернемся к нашей основной программе, просто импортируем модуль с помощью любого из двух синтаксисов и просто выполняем логику.
Одна вещь, на которую я должен обратить ваше внимание, это подорванный max
. Причиной тому является max
— это встроенная функция Python, и мы ее переопределяем. Так что это предупреждение от Компилятор Python что мы больше не можем использовать max как его встроенную функцию.
Встроенные модули в Python
Python поставляется со стандартной библиотекой, которая содержит несколько модулей для обычных задач, таких как отправка электронных писем, работа с датой и временем, генерация случайных значений и паролей и так далее. В Python уже встроено очень много модулей, а это значит, что уже есть множество функций, которые мы можем использовать повторно. Вы можете найти эти модули здесь.
Packages
Пакеты — это еще один способ организовать наш код поверх модулей. Реальный проект может содержать сотни или даже тысячи модулей, и со временем наш каталог раздуется из-за большого количества файлов. Следовательно, лучше организовать связанные модули внутри пакета, что сделает пакет контейнером для нескольких модулей.
В проект добавляется новый каталог, и все связанные модули добавляются в этот каталог. В качестве примера подумайте о торговом центре. В торговом центре есть разные секции мужской, женской и детской одежды, которые похожи на пакеты. В каждом разделе есть разные области для разных видов товаров, таких как обувь, футболки и куртки. Думайте об этом как о модулях.
Давайте посмотрим, как создавать и использовать пакеты в Python.
Сначала добавьте новый каталог из панели проекта. Назовем это «электронная коммерция». Этот пакет будет содержать все модули, связанные с приложением электронной коммерции.
Это по-прежнему пустой каталог, и чтобы преобразовать его в пакет, нам нужно создать в нем специальный файл. Добавьте новый файл Python в этот каталог и назовите этот файл «__init__». Это специальное соглашение в Python, и когда интерпретатор Python видит файл с таким именем в каталоге, он обрабатывает этот каталог как пакет.
У нас также есть альтернативный и краткий метод создания пакета. Просто щелкните правой кнопкой мыши панель проекта и создайте пакет Python из списка. Назовите его «электронная коммерция» и все. Он автоматически создаст каталог с файлом Python с именем «__init__».
Теперь давайте создадим модуль в пакете и назовем его «доставка». В этом модуле давайте создадим простую функцию для расчета стоимости доставки.
def calc_shipping():
print("calc_shipping")
Чтобы получить доступ к этой функции в нашем основном модуле, мы должны получить к ней доступ через пакет электронной коммерции. И снова у нас есть два метода импорта этого модуля.
В первом методе мы можем импортировать весь модуль, а затем независимо вызывать функцию следующим образом:
import eCommerce.shipping
eCommerce.shipping.calc_shipping()
Однако при таком подходе вызов одной из функций этого модуля требует префикса eCommerce.shipping.
Это очень многословно. Итак, при работе с пакетами мы часто используем второй подход и используем from
заявление.
from eCommerce.shipping import calc_shipping
calc_shipping()
Если у вас есть несколько функций в одном модуле, вы можете импортировать их все в одну строку, используя запятые между ними. Допустим, в нашем модуле доставки есть еще одна функция для расчета налога. Это будет импортировано следующим образом:
from eCommerce.shipping import calc_shipping, calc_tax
Вы также можете импортировать отдельные модули и оставить функции для вызова на более позднем этапе программы. Давайте импортируем доставку модуля, а затем используем оператор точки для вызова функции. calc_shipping.
from eCommerce import shipping
shipping.calc_shipping()
Заворачивать!
Пакеты и модули чрезвычайно важны в Python. Особенно, когда вы хотите работать с фреймворком вроде Django, который используется для создания веб-приложений с питоном. Мы рассмотрим Django во время другого курса Python.
Это была последняя традиционная лекция в этой серии. Следующая лекция будет отличаться от нашего обычного формата, и мы изучим несколько важных вариантов использования Python. Это будет означать конец этой серии, и мы перейдем к нашей следующей серии Python. Оставайтесь с нами для этого.
Оставьте комментарий