2.1 Знайомство з пакетами
Пакети — це спосіб структуризації модулів в директорії. Пакет — це директорія, що містить файл __init__.py і один або декілька модулів. Файл __init__.py може бути порожнім або містити код ініціалізації пакету.
Приклад структури пакету/директорії
mypackage/
__init__.py
module1.py
module2.py
Вміст файлу __init__.py |
|---|
|
Вміст файлу module1.py |
|---|
|
Вміст файлу module2.py |
|---|
|
Приклад коду, який використовує функції цього пакету:
import mypackage
print(mypackage.func1()) # Вивід: Function 1
print(mypackage.func2()) # Вивід: Function 2
Давайте нижче спробуємо написати свій власний пакет, заодно і розберемося, як працюють чужі.
2.2 Створюємо свій пакет покроково
Крок 1: Створення структури пакету
Першим кроком є створення структури каталогів і файлів для вашого пакету. Як приклад ми створимо пакет під назвою mypackage, що містить два модулі: module1.py та module2.py.
Приклад структури пакету:
mypackage/
__init__.py
module1.py
module2.py
Опис файлів:
-
__init__.py: Цей файл може бути порожнім або містити код ініціалізації пакету. Він потрібен, щоб Python розглядав каталог як пакет. -
module1.pyіmodule2.py: Ці файли містять функції, класи і змінні, які ви хочете включити у свій пакет.
Крок 2: Написання коду для модулів
Напишемо простий код для наших модулів.
module1.py
def func1():
return "Function 1 from module1"
module2.py
def func2():
return "Function 2 from module2"
__init__.py
Щоб імпортувати функції з наших модулів на рівень пакету, додамо їх у __init__.py.
from .module1 import func1
from .module2 import func2
Тепер, коли ви імпортуєте пакет, функції func1 і func2 будуть доступні напряму.
Крок 3: Тестування пакету
Створіть файл test.py у тому ж каталозі, де знаходиться каталог mypackage, і використовуйте пакет у цьому файлі для тестування.
test.py
import mypackage
print(mypackage.func1()) # Вивід: Function 1 from module1
print(mypackage.func2()) # Вивід: Function 2 from module2
Запустіть test.py, щоб переконатися, що ваш пакет працює правильно.
2.3 Використання функції dir()
Коли ви імпортуєте модуль або пакет, ви можете використовувати функцію dir() для отримання списку всіх доступних атрибутів і методів у цьому модулі. Це особливо корисно, якщо ви працюєте з новим або незнайомим модулем і хочете швидко дізнатися, які функції і класи він надає.
Приклад: Дослідження стандартного модуля math
Розглянемо приклад використання dir() для дослідження стандартного модуля math.
import math
print(dir(math))
Цей код імпортує модуль math і виводить список всіх доступних атрибутів і методів. Результат буде виглядати приблизно так:
['__doc__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan',
'atan2', 'atanh', 'ceil', 'comb', 'copysign', 'cos', 'cosh', 'degrees', 'dist', 'e', 'erf', 'erfc', 'exp', 'expm1',
'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'gcd', 'hypot', 'inf', 'isclose', 'isfinite', 'isinf',
'isnan', 'isqrt', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'log2', 'modf', 'nan', 'perm', 'pi', 'pow', 'prod',
'radians', 'remainder', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'tau', 'trunc']
Цей список включає всі функції та константи, визначені в модулі math, такі як sin, cos, tan, pi та інші.
Використання dir() для користувацьких модулів
Ви також можете використовувати dir() для користувацьких (своїх) модулів. Допустимо, у вас є файл mymodule.py зі наступним вмістом:
# mymodule.py
def greet(name):
return f"Hello, {name}!"
pi = 3.14159
Ви можете імпортувати цей модуль і використовувати dir(), щоб дослідити його вміст:
import mymodule
print(dir(mymodule))
Результат буде наступним:
['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__',
'greet', 'pi']
Список включає 8 службових атрибутів (обгорнені підкресленням) модуля mymodule, і в кінці ви побачите ваш метод greet і змінну pi.
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ