Зміст[Сховати][Показати]
Ця лекція охопить модулі та пакунки в 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 вже вбудовано так багато модулів, що означає, що вже є багато функцій, які ми можемо використовувати повторно. Ви можете знайти ці модулі тут.
Пакети
Пакети — це, по суті, ще один спосіб організувати наш код поверх модулів. Справжній проект може містити сотні чи навіть тисячі модулів, і з часом наш каталог розповниться такою кількістю файлів. Тому кращим підходом є організація пов’язаних модулів усередині пакета, що робить пакет контейнером для кількох модулів.
До проекту додається новий каталог, і до нього додаються всі пов’язані модулі. Як приклад, подумайте про торговий центр. У торговому центрі є різні відділи чоловічого, жіночого та дитячого одягу, які схожі на пакунки. Кожен розділ має різні зони для різних видів товарів, як-от взуття, футболки та куртки. Подумайте про це як про модулі.
Давайте подивимося, як створювати та використовувати пакети в 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, який використовується для створення веб-додатки з Python. Ми розглянемо Django під час іншого курсу Python.
Це була остання традиційна лекція в цій серії. Наступна лекція буде відрізнятися від нашого звичного формату, і ми дізнаємось про деякі важливі випадки використання Python. Це означатиме кінець цієї серії, і ми перейдемо до нашої наступної серії Python. Слідкуйте за оновленнями.
залишити коментар