Глава 17 Модулі та пакети

⏱️ Час на опанування теми: 15 хвилин

🤷 Для чого ми це вивчаємо:

🔑 Результати навчання:

  • Розуміння що таке програма, додаток та програмне забезпечення
  • Розуміння що таке алгоритм, кодування та програмування

🎈 Увага: Наразі ця глава знаходиться у стані активної розробки і ймовірно буде змінюватись і доповнюватись!


У цій главі…


У попередній главі ми створювали фунцкію яка рахує середнє значення елементів списку. Звичайно ж що ми не перші, кому треба порахувати середнє. За 32 роки існування Python безліч людей потребувало вирішити таку задачу. І це стосується не тільки середього – з величезною кількість завдань, які нам потрібно вирішити у програмуванні, хтось десь вже стикався.

Щоб постійно не розв’язувати одні й ті самі завдання з нуля та не писати один й той самий код кожного разу, програмісти почали ділитись своїм кодом з іншими. Цей код вони почали групувати у так звані бібліотеки, які можна встановити додатково до основного функціоналу Python.

Ми можемо порівняти бібліотеки з додатками для вашего смартфону. Смартфон вже має вбудовані додатки, які йдуть так би мовити “з коробки”. Але вони досить обмежані, тому ми встановлюємо додаткові додатки, які вирішують ті чи інші завдання. Так само і бібліотеки та надають додатквий функціонал до наших мов програмування. Ще одне файне слово яке допоможе ще краще зрозуміти ідею бібліотек – це надбудова. У нас є основна будівля і можемо її розширити за допомогою надбудов.

17.1 Відрізняємо модулі від пакетів

У Python бібліотеки називаються або модулі або пакети, залежно від внутрішньої структури. Модулі є кодом який зібрано в один файл, який має розширення .py. Тобто модуль – це звичайний Python скрипт. Пакет використовується для більш великих проєктів і складається з декількох модулей. Гарна новина в тому, що нам не треба відрізняти модулі від пакетів, тому що на рівні користувача, механізм їх використання буде майже ідентичний.

17.2 Встановлюємо модулі та пакети

Деякі модулі є вбудованними у Python і це означає що нам не треба їх встановлювати. Багато пакетів та модулів не йдуть разом із Python і перед тим як використати їх, необхідно їх встановити. Процесс встановлення не є складним, але залежить від системи управління пакетів. Наприклад, такі системи управління пакетів, як pip чи conda, якщо ви використовуєте локальний Python на вашому комп’ютері. Ми не будемо поглиблюватись у цю тему, тому що ми у рамках цих начальних матеріалів ми використовуємо Google Colab, а багато пакетів які нам знадобляться є вже попередньо встановленними. Проте, якщо ж пакет не був попередньо встановленним у Google Colab, ми можемо використати наступну інструкцію в окремій клітинці для встановлення модулю чи пакета:

!pip install package_name

де name_of_package – це ім’я пакета, наприклад torch.

17.3 Імпортуємо модуль або пакет

Коли пакет або модуль вже встановленно, перед тим як його використовувати, нам треба його завантажити або на жаргоні Python – імпортувати. Що це означає? Пам’ятаєте, ми казали що пакети – це як додатки у телефоні? Так ось, щоб використати додаток на телефоні, вам мало його встановити, вам треба його ще відрити. Теж саме і з пакетами, перед тим як його використати, треба його “відкрити”.

Це можна зробити за допомогою ключового слова import:

import package_name

де name_of_package – це ім’я пакета.

Часто ви також можете побачити що ми будемо надавати псевдонім до пакету, коли імпортуємо його. Ось наприклад, програмісти домовились, що пакет NumPy буде мати псевдонім np, і тоді наша інструкція виглядатиме наступним чином:

import numpy as np # зверніть увагу на синтаксис надання псевдоніму -- as

Взагалі то кажучи, ми можемо надати будь-який псевдонім замість np. Але краще дотримуватись цієї негласної угоди (вона називається конвенцією), щоб код було простіше читати потім – якщо ми будемо використовувати np для NumPy усюди, то нам не треба буде шукати import та згадувати який саме псевдонім ми дали NumPy.

А навіщо нам взагалі псевдонім?

17.4 Використовуємо модуль або пакет

Упс, так і не встигли пропрацювати питання у попередній секції. Тому ми це зробимо зараз. Якщо ми імпортували пакет без псевдоніма, то для того щоб викликати функцію з цього пакета, нам треба прописати ім’я пакета, крапка, і ім’я функції: package_name.function_name(). Давайте викличемо фунцкію arange() з пакета NumPy:

import numpy 

numpy.arange(5)
## array([0, 1, 2, 3, 4])

До кожної функції з NumPy нам треба буде додавати п’ять літер numpy і це в рази збільшить довжину нашого коду. Використання більш короткого псевдоніму np дозволяє користуватись саме ним замість повного ім’я пакету, коли ми викликаємо функції:

import numpy as np

np.arange(5)
## array([0, 1, 2, 3, 4])

Якщо ж нам зовсім ліньки писати ім’я і є фунцкії які ви будете використовувати ну дуже часто у коді, тоді ви можете використати ось таку конструкцію:

from numpy import arange

arange(5)
## array([0, 1, 2, 3, 4])

Це робити треба тільи у тому випадку, якщо фунцкія дійсно використовується багато разів. До речі, є один нюанс – треба бути обережним, щоб імя функції котру ви імпортуєте не збігалась з іменами об’єктів, які ви створили. Наприклад, якщо у вас вже є об’єкт arange, то може статися конфлікт між імпортованою функцією та вашим об’єктом. Тому нам зазвичай достатньо імпортувати пакет псевдонімом.

Зазвичай ми будемо імпортувати усі необхідні пакети та модулі в самому початку Google Colab записнику. Виглядатиме ця перша клітинка приблизно ось так:

import numpy as np
import pandas as pd
import matplotlib as mpl

Далі, ми розглянемо дві бібліотеки, без яких нікуди. Це NumPy та matplotlib.


🤸 Вправи
1. Котрий рядок правильно встановить пакет?
2. Як з пакету pandas викачати лише одну функцію DataFrame? Перетягніть фрагменти коду у правильному порядку:
pandas
DataFrame
import
from
3. Котрий рядок коду правильно встановить функцію read_csv() з пакету pandas?
4. Які елементи можуть бути імпортовані з пакету pandas за допомогою from pandas import...?
5. Що таке конвенція в імпортуванні пакетів з псевдонімами?