Введение

Python — интерпретируемый язык программирования (но с компиляцией в байт-код).

Python — динамически типизируемый язык программирования (но с опциональными аннотациями типов).

Python — объектно-ориентированный язык программирования.

Python поддерживает интроспекцию (help(), dir(), type(), vars()).

Реализации Python:

  • CPython — основная реализация
  • MicroPython — Python для микроконтроллеров
  • PyPy — Python с поддержкой Just-In-Time компиляции (JIT-компиляции)
  • Jython — Python running over Java Virtual Machine (JVM)
  • IronPython — Python running over Common Language Runtime (.NET Framework)

Дистрибутивы Python (готовый набор интерпретатора и сторонних пакетов):

  • Anaconda / Miniconda — это популярный дистрибутив Python, часто используемый для научных вычислений и Machine Learning. Особенности:
    • Упрощённая установка научного стека научных пакетов.
    • Менеджер пакетов и виртуальный окружений conda.
    • Бинарные сборки пакетов с библиотеками для научных вычислений (BLAS, MKL и т.п.).
    • Платная подписка Anaconda Enterprise для лучшего управления пакетами, безопасности, приватных репозиториев.
  • WinPython — Портативный дистрибутив для Windows с упором на научные библиотеки, не требует установки, включает IDE и пакеты для анализа данных.
  • — Оптимизированная сборка с акцентом на производительность, содержит ускоренные библиотеки NumPy/SciPy благодаря MKL.
  • ActiveState Python — это дистрибутив Python, собираемый и поддерживаемый компанией ActiveState. Особенности:
    • Предварительно собранные и протестированные бинарные пакеты Python и популярных библиотек (особенно для Windows и Linux).
    • Упрощённая установка зависимостей без необходимости компилировать модули C/С++.
    • Инструмент ActiveState Platform, позволяющий создавать собственные сборки Python с нужными библиотеками и управлять ими как проектами.
    • Коммерческая поддержка, ориентированная на предприятия: безопасность, обновления, лицензирование.
  • python(x,y) - это дистрибутив Python для Windows, популярный в 2000-х и начале 2010-х. Его цель была предоставить «всё в одном» решение для научных и инженерных задач.

Оболочки:

  • встроенная
  • bPython
  • iPython

Куда можно установить пакеты в Python:

  • системные
  • пакеты пользователя
  • виртуальное окружение - каталог для хранения пакетов, привязанных к опр. проекту
    • pipenv
    • poetry
  • можно указать вручную (sys.path, PYTHONPATH)

IDE, Integrated Development Environment:

  • VS Code / Vscodium (нужен сервер LSP, Language Service Protocol)
  • PyCharm
  • IDLE (примитивный)
  • Wing IDE
  • Komodo IDE
  • Netbeans
  • Eclipse (Pydev)
  • Vim / Neovim

Линтеры (статический анализатор кода) - поиск ошибок в коде без его запуска:

  • flake8
  • pylint
  • bandit
  • mypy

Профилировщики - анализ производительности кода

  • встроенные в стандартную библиотеку
  • другие

Фреймворки тестирования ПО (для unit-тестирования)

  • unittest
  • pytest
  • nose

Во время модульного тестирования можно измерить тестовое покрытие