Введение
Python - высокоуровневый язык программирования общего назначения с динамической строгой типизацией и автоматическим управлением памятью, ориентированный на повышение производительности разработчика, читаемости кода и его качества, а также на обеспечение переносимости написанных на нём программ. Язык является полностью объектно-ориентированным в том плане, что всё является объектами [1].
Он используется в анализе данных, машинном обучении, DevOps и веб-разработке, а также в других сферах, включая разработку игр. За счёт читабельности, простого синтаксиса и отсутствия необходимости в компиляции язык хорошо подходит для обучения программированию, позволяя концентрироваться на изучении алгоритмов, концептов и парадигм. Отладка же и экспериментирование в значительной степени облегчаются тем фактом, что язык является интерпретируемым. В рейтинге TIOBE популярности языков программирования Python объявлялся “языком года” в 2007, 2010, 2018, 2020 и 2021 годах.
Парадигмы программирования
Хоть дизайн языка Python и построен вокруг объектно-ориентированной модели программирования, он является мультипарадигмальным языком программирования. Полностью поддерживаются следующие парадигмы:
- объектно-ориентированное программирование
- структурное программирование
- обобщенное программирование
- функциональное программирование
- метапрограммирование
- рефлексивное программирование
Реализация ООП
Реализация ООП в Python является хорошо продуманной, но вместе с тем достаточно специфической по сравнению с другими объектно-ориентированными языками. В языке всё является объектами — либо экземплярами классов, либо экземплярами метаклассов. Исключением является базовый встроенный метакласс type
. Таким образом, классы на самом деле являются экземплярами метаклассов, а производные метаклассы являются экземплярами метакласса type
. Метаклассы являются частью концепции метапрограммирования и предоставляют возможность управления наследованием классов, что позволяет создавать абстрактные классы, регистрировать классы или добавлять в них какой-либо программный интерфейс в рамках библиотеки или фреймворка.
Возможности и особенности, специфичные для Python:
- Специальные методы, управляющие жизненным циклом объекта: конструкторы, деструкторы.
- Перегрузка операторов (всех, кроме
is
,.
,=
и символьных логических). - Свойства (имитация поля с помощью функций).
- Управление доступом к полям (эмуляция полей и методов, частичный доступ, и т. п.).
- Методы для управления наиболее распространёнными операциями (истинностное значение,
len()
, глубокое копирование, сериализация, итерация по объекту, …). - Полная интроспекция.
- Классовые и статические методы, классовые поля.
- Классы, вложенные в функции и классы.
- Возможность модифицировать объекты во время исполнения программы.
Модули и пакеты
Программное обеспечение (приложение или библиотека) на Python оформляется в виде модулей, которые в свою очередь могут быть собраны в пакеты. Модули могут располагаться как в каталогах, так и в ZIP-архивах. Модули могут быть двух типов по своему происхождению: модули, написанные на «чистом» Python, и модули расширения (extension modules), написанные на других языках программирования. Например, в стандартной библиотеке есть «чистый» модуль pickle и его аналог на Си: cPickle. Модуль оформляется в виде отдельного файла, а пакет — в виде отдельного каталога. Подключение модуля к программе осуществляется оператором import
.
import math
Сборка пакетов обычно осуществляется с помощью таких инструментов, как pip
. pip
- система управления пакетами, которая используется для установки и управления программными пакетами, написанными на Python. Множество этих пакетов размещается в онлайн репозитории Python Package Index (PyPI).
pip install numpy