class: center, middle, inverse # Модулі та екосистема ## Python 101 .footnote[ ###Богдан Кулинич ] --- layout: true ## Модулі --- Великі програми розбиваються на логічні частини --- - Модуль (module) — це просто файл з Python-кодом (`.py`) - Модулі можна імпортувати ```python import module from module import name1, name2 ``` --- ```python # module.py answer = 42 def what_is_the_answer(): return answer ``` --- ```python # main.py from module import answer, what_is_the_answer print(answer) print(what_is_the_answer()) import module print(module.answer) print(module.what_is_the_answer()) ``` --- Імпортування з перейменуванням модуля ```python import module as mod print(mod.answer) print(mod.what_is_the_answer()) from module import answer as ans print(ans) ``` --- ```python from module import * print(answer) print(what_is_the_answer()) ``` --- layout: true ## Пакети --- Модулі можна організовувати в пакети (package) --- - Пакет — це директорія у файловій системі - В директорії має бути файл `__init__.py` ``` . ├── main.py └── package ├── __init__.py └── module.py ``` --- ```python # main.py import package.module print(package.module.answer) from package import module print(module.answer) from package.module import answer print(answer) ``` --- - `__init__.py` часто буває порожнім - Код в `__init__.py` виконується при імпортуванні пакету - Можна визначити змінну `__all__` і використовувати `from package import *` --- ```python # package/__init__.py __all__ = ['module'] ``` ```python # main.py from package import * print(module.answer) ``` (Погана практика) --- Відносні шляхи (Python 3) ``` . ├── a │ ├── __init__.py │ ├── x.py │ └── y.py ├── b │ ├── __init__.py │ ├── x.py │ └── y.py ├── __init__.py └── main.py ``` ```python # a/x.py from . import y from .. import b from ..b import x, y ``` --- layout: true ## Стандартна бібліотека --- - `__builtins__` - `collections` - `datetime` - `math` - `random` - `statistics` - `itertools` - `operator` - `os` - `sys` --- layout: false ## Екосистема - **virtualenv** – менеджер віртуальних середовищ для Python (часто використовується з **virtualenvwrapper**) - Пакетний менеджер **pip** - Центральна база пакетів **PyPI** (Python package index)