CPython является основной, но не единственной реализацией языка программирования Python. Существуют также следующие реализации:
Jython — реализация Python, использующая JVM в качестве среды исполнения. Позволяет прозрачно использовать Java библиотеки.
PyS60 — реализация языка для смартфонов фирмы Nokia на платформе Series60.
IronPython — Python для Microsoft .NET и Mono. Компилирует Python программы в MSIL, таким образом предоставляя полную интеграцию с .NET системой.
Stackless — также написанная на С реализация Python. Это не полноценная реализация, а патчи к CPython. Предоставляет расширенные возможности многопоточного программирования и значительно большую глубину рекурсии.
Python for .NET — ещё одна реализация Python для .NET. В отличие от IronPython эта реализация не компилирует Python код в MSIL, а только предоставляет интерпретатор, написанный на C#. Позволяет использовать .NET сборки из Python кода.
PyPy — реализация Python, написанная на Python. Позволяет легко проверять новые возможности. В PyPy кроме стандартного CPython включены возможности Stackless, Psyco, модификация АСТ «на лету» и многое другое. В проект интегрированы возможности анализа Python кода и трансляция в другие языки и байткоды виртуальных машин (C, LLVM, Javascript, .NET с версии 0.9.9). Начиная с 0.9.0, возможна полностью автоматическая трансляция интерпретатора на C, в результате чего достигается скорость, приемлемая для использования (в 2—3 раза медленнее чем CPython при отключённом JIT для версии 0.9.9). JIT находится в активной доработке.
python-safethread — версия CPython без GIL, что позволяет одновременно исполнять Python потоки на всех доступных процессорах. Внесены также некоторые другие изменения.
Unladen Swallow — начатый Google проект по разработке высокоэффективного, максимально совместимого с CPython JIT-компилятора на базе LLVM. Согласно планам по развитию Python исходный код Unladen Swallow будет слит с кодом CPython в версии 3.3. Начиная с этой версии Unladen Swallow будет неотъемлемой частью CPython.
tinypy — минималистическая версия Python. Часть возможностей CPython не реализована.
Дальнейшая разработкаPython Enhancement Proposal («PEP») — это документ со стандартизированным дизайном, предоставляющий общую информацию о языке Python, включая новые предложения, описания и разъяснения возможностей языка. PEP предлагаются как основной источник для предложения новых возможностей и для разъяснения выбора того или иного дизайна для всех основных элементов языка. Выдающиеся PEP рецензируются и комментируются BDFL.
График и совместимость
Серии Python 2.x и Python 3.x в течение нескольких выпусков будут существовать параллельно, при этом серия 2.x будет использоваться для совместимости и скорее всего в неё будут включены некоторые возможности серии 3.x. PEP 3000 содержит больше информации о планируемых выпусках.
Python 3.0 обратно не совместим с предыдущей серией 2.x. Код Python 2.x скорее всего будет выдавать ошибки при исполнении в Python 3.0. Динамическая типизация Python вместе с планами изменения нескольких методов словарей делает механический перевод из Python 2.x в Python 3.0 очень сложным. Однако, утилита «2to3» уже способна сделать большинство работы по переводу кода, указывая на подозрительные ей части с помощью комментариев и предупреждений. PEP 3000 рекомендует держать исходный код для серии 2.x, и делать выпуски для Python 3.x с помощью «2to3». Полученный код не следует редактировать, пока программа должна быть работоспособной в Python 2.x.
Возможности
Основные изменения, внесённые в версии 3.0:
- Синтаксическая возможность для аннотации параметров и результата функций (например, для передачи информации о типе или документирования).
- Полный переход на unicode для строк.
- Введение нового типа «неизменяемые байты» и типа «изменяемый буфер». Оба необходимы для представления бинарных данных.
- Новая подсистема ввода-вывода (модуль
io
), имеющая отдельные представления для бинарных и текстовых данных. - Абстрактные классы, абстрактные методы (доступно уже в 2.6).
- Иерархия типов для чисел.
- Выражения для словарей и множеств
{k: v for k, v in a_dict}
и{el1, el2, el3}
(по аналогии со списковыми выражениями). - Изменения
print
из встроенного выражения во встроенную функцию. Это позволит модулям делать изменения, подстраиваясь под разное использование функции, а также упростит код. В Python 2.6 эта возможность активируется вводомfrom __future__ import print_function
. - Перемещение
reduce
(но неmap
илиfilter
) из встроенного пространства в модульfunctools
(использованиеreduce
существенно менее читабельно по сравнению с циклом). - Удаление некоторых устаревших возможностей, поддерживаемых в ветке
2.x для совместимости, в частности: классы старого стиля, целочисленное
деление с обрезанием результата как поведение по умолчанию, строковые
исключения, неявный относительный импорт, оператор
exec
и т. п. - Реорганизация стандартной библиотеки.
- Новый синтаксис для метаклассов.
- Изменен синтаксис присваиваний. Стало возможным, например, присваивание
(a, *rest, b) = range(5)
. С другой стороны, формальные параметры функций вродеdef foo(a, (b, c))
более недопустимы.
На основе Python было создано несколько специализированных подмножеств языка, в основном предназначенных для статической компиляции в машинный код. Некоторые из них:
RPython — созданная в рамках проекта PyPy сильно ограниченная реализация Python без динамизма времени исполнения и некоторых других возможностей. RPython код можно компилировать во множество других языков/платформ — C, JavaScript, Lisp, .NET, LLVM. На RPython написан интерпретатор PyPy.
Pyrex — ограниченная реализация Python, но несколько меньше, чем RPython. PyReX расширен возможностями статической типизации типами из языка С и позволяет свободно смешивать типизированный и не типизированный код. Предназначен для написания модулей расширений, компилируется в код на языке С.
Cython — расширенная версия Pyrex.
pyastra — компилятор Python кода в ассемблер для PIC архитектуры.
Проект shed-skin — предназначен для компиляции неявно статически типизированного Python кода в оптимизированный код на языке С++, проект далёк от завершения.
ПрименениеPython — стабильный и распространённый язык. Он используется во многих проектах и в различных качествах: как основной язык программирования или для создания расширений и интеграции приложений. На Python реализовано большое количество проектов, также он активно используется для создания прототипов будущих программ.
Python используется во многих крупных компаниях.