Python — это интерпретируемый, интерактивный объектно-ориентированный язык программирования, который сочетает выразительный синтаксис с поддержкой нескольких парадигм: процедурной, объектно-ориентированной и функциональной 1. Язык включает модули, исключения, динамическую типизацию и классы, а также предоставляет интерфейсы к системным вызовам, библиотекам и оконным системам; его можно расширять кодом на C и C++ 1. Python портирован на многие варианты Unix, включая Linux и macOS, а также на Windows 1.

История языка началась в конце 1980-х. Гвидо ван Россум, работая в группе распределённой операционной системы Amoeba в CWI, искал способ упростить администрирование системы, не прибегая к написанию программ на C или сценариев Bourne shell 1. Его опыт с языком ABC подсказал многие черты будущего Python, включая использование отступов для группировки операторов и высокоуровневые типы данных; из Modula-3 пришли синтаксис и семантика исключений 1. В течение рождественских каникул 1989 года ван Россум начал реализацию, а в феврале 1991 года, спустя чуть более года разработки, объявил о проекте в USENET 1.

Сегодня Python — это высокоуровневый язык общего назначения, применимый к широкому кругу задач 1. Его стандартная библиотека покрывает обработку строк (регулярные выражения, Unicode, вычисление различий между файлами), интернет-протоколы (HTTP, FTP, SMTP, XML-RPC, POP, IMAP), программную инженерию (модульное тестирование, логирование, профилирование, разбор кода Python) и интерфейсы операционной системы (системные вызовы, файловые системы, сокеты TCP/IP) 1. Дополнительные возможности предоставляют сторонние расширения, доступные через Python Package Index 1.

Управление версиями и совместимость

Нумерация версий Python следует схеме «A.B.C» или «A.B»: A — мажорный номер, который увеличивается только при действительно крупных изменениях в языке; B — минорный номер, растущий при менее значительных изменениях; C — микрономер, который увеличивается с каждым выпуском исправлений ошибок 1. Не все выпуски являются исправлениями: перед новым функциональным релизом выходят альфа-, бета-версии и кандидаты на выпуск. Альфа-версии — ранние, с ещё не зафиксированными интерфейсами; бета-версии более стабильны и сохраняют существующие интерфейсы, но могут добавлять новые модули; кандидаты на выпуск заморожены и меняются только для исправления критических ошибок 1. Суффиксы «aN», «bN» и «rcN» обозначают соответствующие стадии, а суффикс «+» указывает на невыпущенные версии, собранные непосредственно из репозитория разработки CPython 1. Политика обратной совместимости описана в PEP 387, а информация о цикле разработки — в Developer’s Guide 1.

Реализации: не только CPython

Хотя CPython — оригинальная и наиболее широко используемая реализация Python, написанная на C, существуют и альтернативы 3. Jython реализует Python на Java и может использоваться как язык сценариев для Java-приложений или для создания тестов для Java-библиотек 3. Python for .NET использует CPython, но оформлен как управляемое приложение .NET и предоставляет доступ к библиотекам .NET; его создал Брайан Ллойд 3. IronPython — другая реализация для .NET, которая генерирует IL и компилирует код Python напрямую в сборки .NET; её создал Джим Хьюджин, оригинальный автор Jython 3. PyPy написан полностью на Python и поддерживает такие продвинутые возможности, как stackless-режим и JIT-компилятор; одна из целей проекта — упростить эксперименты с самим языком за счёт модификации интерпретатора 3. Каждая реализация может отличаться от языка, описанного в справочном руководстве, поэтому для конкретной реализации следует обращаться к её собственной документации 3.

Установка и сборка на Unix-подобных системах

На большинстве дистрибутивов Linux Python предустановлен, а на остальных доступен как пакет 2. Однако некоторые возможности, отсутствующие в пакете дистрибутива, можно получить, собрав последнюю версию из исходников 2. Для сборки CPython необходимо загрузить исходный код последнего релиза или свежий клон репозитория и установить зависимости сборки; процесс состоит из команд ./configure, make и make install 2. Документация предупреждает, что make install может перезаписать или замаскировать бинарный файл python3, поэтому рекомендуется использовать make altinstall, который устанавливает только exec_prefix/bin/pythonversion 2.

Для FreeBSD пакет добавляется командой pkg install python3, для OpenBSD — pkg_add -r python 2. В некоторых установках может отсутствовать IDLE — среда разработки; для Debian и Ubuntu её ставят через sudo apt install idle, для Fedora, RHEL и CentOS — через sudo dnf install python3-idle, для SUSE и OpenSUSE — через sudo zypper install python3-idle, для Alpine Linux — через sudo apk add python3-idle 2.

Чтобы использовать скрипты Python в Unix, их нужно сделать исполняемыми, например командой chmod +x script, и добавить в начало подходящую строку shebang; хорошим выбором обычно является #!/usr/bin/env python3, которая ищет интерпретатор во всём PATH, хотя в некоторых Unix-системах команда env может отсутствовать, и тогда путь /usr/bin/python3 жёстко задаётся 2. Для вызова shell-команд из скриптов Python предназначен модуль subprocess 2.

При сборке Python с собственной версией OpenSSL документация рекомендует использовать цель install_sw, а не install, чтобы не перезаписывать openssl.cnf; для конфигурации Python предусмотрены опции --with-openssl и --with-openssl-rpath 2. Патч-релизы OpenSSL имеют обратно совместимый ABI, поэтому для обновления OpenSSL не требуется перекомпилировать Python — достаточно заменить установку OpenSSL на более новую версию 2.

Python в образовании: пример Южной Кореи

Систематический обзор исследований, посвящённых интеграции Python в образование Южной Кореи, показал, что инновации в создании учебных материалов с использованием Python росли в период с 2014 по 2022 год 5. Основным мотивом этих инноваций была адаптация к учебной программе по программному обеспечению Южной Кореи 5. В исследовательских подходах преобладали исследования и проектирование, а в тематике — исследования базового образования 5. Авторы обзора отмечают, что ограничением работы стали источники, полученные только из баз Google Scholar и Academic Naver; для дальнейших исследований рекомендуется использовать и другие базы, такие как Scopus, WOS, Dimension и иные авторитетные ресурсы 5. Наибольший потенциал для будущих исследований, по мнению авторов, имеет использование Python для развития у студентов навыков вычислительного мышления 5.

Ограничения и что важно учитывать

Приведённые источники описывают Python в основном с точки зрения официальной документации и одного систематического обзора. Справочное руководство по языку не является учебником и намеренно избегает излишней формализации, кроме синтаксиса и лексического анализа, поэтому в нём возможны неоднозначности 3. Кроме того, документация предупреждает, что включение слишком большого числа деталей реализации в справочник рискованно: реализация может измениться, а другие реализации того же языка могут работать иначе 3. Данные об интеграции Python в образование Южной Кореи ограничены выбранными базами и периодом 2014–2022 годов, что не позволяет делать выводы о других странах или более поздних периодах 5. Наконец, сведения об установке и сборке на Unix-подобных системах касаются конкретных платформ и могут не переноситься на другие операционные системы без дополнительной проверки 2.

Что дальше

Для читателей, желающих углубиться в тему, официальная документация предлагает начать с The Python Tutorial и Beginner’s Guide to Python, которые ссылаются на вводные руководства и ресурсы 1. Разработчикам, планирующим участвовать в развитии CPython, адресован Developer’s Guide с инструкциями по сборке и настройке окружения 2. Исследователям, изучающим применение Python в образовании, обзор указывает на необходимость расширения источниковой базы и на перспективность направления, связанного с вычислительным мышлением 5.