Программирование на Python

Технические характеристики интерпретатора CPython
Язык Python базируется на эталонной реализации CPython, написанной на C. Версия 3.12 (актуальная на 2026 год) использует внутреннее представление байт-кода с оптимизациями через механизм специализации. Размер стека виртуальной машины по умолчанию составляет 1000 элементов, глубина рекурсии ограничена 1000 вызовами (настраивается через sys.setrecursionlimit). Минимальные системные требования: 512 МБ ОЗУ, 1 ГГц процессор, 150 МБ дискового пространства для базовой установки.
Спецификация синтаксиса и отличия от альтернатив
- Динамическая типизация — в отличие от Java или C++, Python проверяет типы во время выполнения, а не на этапе компиляции. Это ускоряет написание кода, но требует дисциплины для избежания ошибок.
- Сборка мусора — реализована через подсчёт ссылок (reference counting) и циклический детектор (generational GC). В C++ управление памятью ручное, в Java — только трассирующий GC.
- Интерпретация vs компиляция — Python компилирует исходный код в байт-код (.pyc) перед выполнением, в отличие от чистых интерпретаторов (например, Bash) или нативно компилируемых языков (Go).
- GIL (Global Interpreter Lock) — ключевое отличие от многопоточных языков. В CPython только один поток может выполнять байт-код одновременно. Альтернативы: Jython (без GIL) или использование multiprocessing для параллелизма.
Стандарты качества кода: PEP8 и PEP484
Для поддержания единообразия в студенческих проектах обязательны следующие спецификации:
- PEP8 — руководство по стилю: отступы 4 пробела, длина строки не более 79 символов, пустые строки между функциями (2 строки) и классами (1 строка). Проверка выполняется линтером flake8.
- PEP484 — аннотации типов (type hints). Пример:
def add(a: int, b: int) -> int:. В отличие от TypeScript, Python не проверяет типы статически — используется mypy для верификации. - PEP257 — документирование через docstrings. Формат: reStructuredText или Google style. Студенты должны включать описание параметров, возвращаемых значений и исключений.
Производственные особенности: версии и совместимость
В учебных материалах используется Python 3.10+. Критические различия между версиями: в Python 3.8 появился оператор walrus (:=), в 3.10 — структурное сопоставление с образцом (match-case). Стандарт ABI (Application Binary Interface) меняется между минорными версиями — расширения на C необходимо перекомпилировать. Студенческие лабораторные работы проверяются на совместимость с CPython 3.12 и PyPy (альтернативный интерпретатор с JIT-компиляцией, увеличивающий скорость до 4 раз для численных задач).
Рекомендации по окружению разработки
- Виртуальные окружения — изолируют зависимости проекта через venv или poetry. Требование: не использовать системные пакеты.
- Системы сборки — setuptools (pyproject.toml) или poetry.lock для воспроизводимости. Отличие от npm в JavaScript: фиксация версий только в lock-файле.
- Тестирование — модули pytest (с поддержкой фикстур) и unittest (встроенный). Покрытие тестами не менее 80% для сдаваемых проектов.
Учебные материалы и требования к сдаче
Студентам предоставляются репозитории с шаблонами кода (GitHub Classroom). Каждое задание включает:
- Файл specification.md — описание функциональных требований и критериев приёмки.
- Тестовые наборы (test_*.py) — студент не должен их модифицировать.
- Шкала оценки по метрикам: статический анализ (10%), юнит-тесты (40%), производительность (20%), соответствие PEP8 (30%).
Разработка ведётся в IDE PyCharm Professional или VS Code с расширениями Pylance, Black (автоформаттер в соответствии с PEP8) и isort (сортировка импортов). Отчётность по проектам принимается в формате Jupyter Notebook с использованием Markdown для пояснений.
Добавлено: 08.05.2026
