Карл Саган сказал: «Если вы хотите испечь яблочный пирог c нуля, вам сначала надо создать Вселенную». У программистов для этого есть библиотеки.
Вспомним основное, что мы раньше обсуждали в модуле про Python:
- Синтаксис ядра языка Python минималистичен, используется в том числе для написания скриптов. Необычной особенностью языка является выделение блоков кода пробельными отступами.
- Используется и для работы с приложениями. Одна из областей применения Python — разработка веб-приложений и десктопных программ.
- Python — объектно-ориентированный язык программирования. В отличие от процедурно-ориентированного программирования, ООП опирается на объекты. Объекты - это абстракция Python для данных. Все данные в программе Python представлены объектами или отношениями между объектами. Объект — это набор данных (переменных) и методов (функций), которые с этими данными взаимодействуют. Итерируемый объект (iterable) - это объект, который способен возвращать элементы по одному. Кроме того, это объект, из которого можно получить итератор. Примеры итерируемых объектов: все последовательности: список, строка, кортеж словари файлы.
- Классы (типы) — это объектные фабрики. Их главная задача — создавать объекты, обладающие определенным поведением. Классы определяют поведение объектов с помощью своих атрибутов (которые хранятся в __dict__ класса): методов, свойств, классовых переменные, дескрипторов, а также с помощью атрибутов, унаследованных от родительских классов.
- Инстанцирование обычного объекта происходит в 2 этапа: сначала его создание, потом инициализация. Итак, класс-это шаблон кода для создания объектов.
- Объекты имеют переменные - члены и поведение, связанное с ними. В python класс создается с помощью ключевого слова class.Объект создается с помощью конструктора класса. Этот объект будет называться экземпляром класса.
- Метакласс - это класс, который создаёт другие классы. В сущности, метапрограммирование создаёт или модифицирует код во время выполнения программы, а не во время её написания. Python предоставляет возможность управлять данным процессом, разрешая написать собственный метакласс для выполнения этой работы.
- Атрибут — это переменная, принадлежащая классу. Другое название – поле класса. Атрибуты бывают динамическим и статическим. Статический атрибут относится к самому классу. Динамический принадлежит объектам класса. По сути атрибуты — переменные, в значениях которых хранятся свойства объекта. Для создания или изменения значения атрибута необходимо использовать следующий синтаксис:< имя_объекта>.<имя_атрибута> = <значение>.
- Действия объектов называются методами. Методы очень похожи на функции, в них можно передавать аргументы и возвращать значения с помощью оператора return, но вызываются методы после указания конкретного объекта.
Модули, пакеты, фреймворки и библиотеки
Модули (Module) в Python — это файлы с кодом с расширением «.py». При импорте расширение опускается, интерпретатор и так знает, что после команды import следует имя модуля.
Пакет (Package) - это набор взаимосвязанных модулей(при этом стоит уточнить, что сам пакет тоже является модулем), предназначенных для решения задач определенного класса некоторой предметной области. Это такой способ структуризации модулей. Пакет представляет собой папку, в которой содержатся модули и другие пакеты и обязательный файл __init__.py, отвечающий за инициализацию пакета.
Библиотека (library) — набор готовых решений, созданных для облегчения и ускорения разработки. Обычно, библиотека нацелена на решение одной задачи или группы задач, например, реализация анимации.
Библиотеки Python — это файлы с шаблонами кода. Их создали для того, чтобы люди не набирали каждый раз заново один и тот же код: достаточно открыть файл, вставить свои данные и получить результат.
Стандартная библиотека Python включает большой набор полезных переносимых функций, начиная с возможностей для работы с текстом и заканчивая средствами для написания сетевых приложений. Дополнительные возможности, такие как математическое моделирование, работа с оборудованием, написание веб-приложений или разработка игр, могут реализовываться посредством обширного количества сторонних библиотек, а также интеграцией библиотек, написанных на Си или C++, при этом и сам интерпретатор Python может интегрироваться в проекты, написанные на этих языках.
Помимо стандартной библиотеки, поставляемой в составе Python, мы можем загрузить и установить любое количество сторонних
- научные библиотеки математической обработки,
- библиотеки визуализации,
- библиотеки анализа и парсинга данных,
- библиотеки машинного обучения,
- а также фреймворки для создания веб-приложений.
"Какая разница между модулем, пакетом и библиотекой Python?"
Модуль представляет собой простой файл Python, который содержит коллекции функций и глобальных переменных и имеет файл с расширением .py. Это исполняемый файл, и для организации всех модулей у нас есть концепция, называемая Package в Python.
Пакет представляет собой простой каталог, содержащий коллекции модулей. Этот каталог содержит модули Python, а также __init__.py файл, с помощью которого интерпретатор интерпретирует его как Пакет. Пакет - это просто пространство имен. Пакет также содержит вложенные пакеты внутри него.
Библиотека содержит набор связанных функциональных кодов, которые позволяют выполнять многие задачи без написания вашего кода. Это многоразовый фрагмент кода, который мы можем использовать, импортируя его в нашу программу, мы можем просто использовать его, импортируя эту библиотеку и вызывая метод этой библиотеки с точкой (.). Часто предполагается, что, хотя пакет представляет собой набор модулей, библиотека - коллекция пакетов. Поэтому иногда пишут, что NumPy и Pandas -пакеты, а Matplotlib, Seaborn, PyTorch и Pygame для создания видеоигр - это библиотеки.
Почитать посмотреть можно здесь.
Формирование запросов
Для формирования запросов импортируют следующий модуль: это стандартная библиотека в питоне request:
Метод def make_format(self, currency) в нашей задаче задает формат
Ко всем методам необходимо прописать детали - документацию, что он делает - так удобнее вам, коллегам и пользователям. Вызывается справка знаком ? перед методом.
Функция super берёт родительский класс и вызывает у него метод init, внутри дочернего класса в его init:
Наследование позволяет импортировать в свой класс импортировать результаты каких-то более сложных модулей и более сложных процессов, что серьёзно упрощает задачу.
Пример: система повышения зарплат - мы разбиваем на отделы и внутри даем функцию проверку - не пора ли повысить, чтоб не пытаться увязать в сложном коде разные события и изменения в каждом отделе.
Импорт классов и функций from libs.exchange import Rate, второй вариант - если неизвестно где лежит: полезные библиотеки функции можно положить в одной папке, потом всюду их использовать
import sys
sys.path.append ()
Настоящая сила классов становится очевидной, когда вопрос касается подклассов. Вы, возможно, еще не поняли это, но мы уже создали подкласс, когда создавали класс, основанный на объекте. Другими словами, «подклассифицировали» объект.
Полиморфические классы имеют одинаковый интерфейс (методы, атрибуты), но они не контактируют друг с другом. Касаемо полиморфизма в питоне, не очень сложно выяснить, что интерфейсы являются идентичными. С этого момента мы знакомимся с понятием утиная типизация. Суть утиной типизации заключается в том, что если это ходит как утка, и крякает как утка – значит, это должна быть утка.
"Как запустить библиотеку, пакет или модуль?"
Библиотеки помогают сделать процесс проще. Стандартная библиотека хранится в папке Lib папки, в которую установлен Python. Полные имена сущностей, объявленных в стандартной библиотеке, формируются относительно этой папки.
Есть полезные модули стандартной библиотеки time и os для работы с ОС и файлами и смены директорий.
Программист может без проблем подключить любой модуль, который есть в стандартной библиотеке Python 3.
Для подключения специфичных пользовательских инструментов сначала нужно их скачать. Обычно для этого используется пакетный менеджер pip.
Посмотреть список установленных пакетов Python можно с помощью команды: pip list. Найти конкретный пакет по имени можно командой "pip search".
О других командах можно прочесть в справке, которая выдается по команде "pip help".
Удаление пакета Python. Когда пакет больше не нужен, пишем: pip uninstall имя_пакета.
Подключать модули желательно в самом вверху скрипта, используя ключевое слово «import», например import random.
Некоторые модули имеют длинное и неудобное название. Для удобства и сокращения количества кода программист может заменить его на своё.
Например, если написать «import random as rand«, то вместо длинного random для обращения к функциям библиотеки можно будет использовать короткое rand.
Чтобы не захламлять программу большим количеством неиспользуемых инструментов, можно подключать не весь модуль, а какую-то его часть.
Например, программист хочет использовать только одну функцию из математической библиотеки math. Если он подключит всю библиотеку, то в скрипт добавится более 40 функций, которые будут занимать место. Чтобы добавить в проект какую-то часть, используют ключевое слово from.
Если после import написать символ звёздочки «*», подключится все содержимое модуля. Это считается плохим тоном, потому что может привести к совпадению имён из основного скрипта с именами из подключаемого. Но если программист уверен, что использовал уникальные названия для функций и переменных, теоретически он может использовать этот способ.
Другие подробности о подключении здесь.
Понятно, что деление библиотек на типы тоже несколько условно. Здесь можно почитать фрагменты книги о библиотеках, гит и МО.
Научные и библиотеки для визуализации я описываю подробней в следующей статье.
Библиотеки парсинга обсуждаются в этой статье.
Библиотеки машинного обучения в этой.