Что это за шум вокруг Python и CPython (Jython, IronPython) , я не понимаю:
python.org упоминает, что CPython это:
«Традиционная» реализация Python (по прозвищу CPython)
еще один вопрос переполнения стека упоминает, что:
CPython является интерпретатором байт-кода по умолчанию Python, который написан на C.
Честно говоря, я не понимаю, что оба эти объяснения практически означают, но я подумал, что если я использую CPython, это значит, когда я запускаю пример кода Python, он компилирует его на язык C, а затем выполняет его так, как если бы он был C код
Так что же такое CPython и как он отличается от Python, и стоит ли мне использовать CPython над Python, и если да, то в чем его преимущества?
Ответы:
Так что же такое CPython?
CPython - это оригинальная реализация Python. Это реализация, которую вы загружаете с Python.org. Люди называют его CPython, чтобы отличать его от других, более поздних реализаций Python, и отличать реализацию языкового движка от самого языка программирования Python .
Последняя часть - то, откуда приходит ваше замешательство; вам нужно хранить язык Python отдельно от всего, что выполняет код Python.
Сказано, что CPython реализован на языке C. Это на самом деле просто деталь реализации. CPython компилирует ваш код Python в байт-код (прозрачно) и интерпретирует этот байт-код в цикле оценки.
CPython также первым внедрил новые функции; Разработка языка Python использует CPython в качестве основы; другие реализации следуют.
А как насчет Jython и т. Д.?
Jython , IronPython и PyPy являются текущими "другими" реализациями языка программирования Python; они реализованы в Java, C # и RPython (подмножество Python), соответственно. Jython компилирует ваш код Python в байт- код Java , поэтому ваш код Python может работать на JVM. IronPython позволяет запускать Python в Microsoft CLR . А PyPy, реализованный в (подмножестве) Python, позволяет запускать код Python быстрее, чем CPython, что по праву должно поразить вас. :-)
Собственно компилируется в C
Таким образом, CPython не переводит ваш код Python на C сам по себе. Вместо этого он запускает цикл интерпретатора. Там является проект , который делает перевод Python-МОГ код на C, и что называется Cython . Cython добавляет несколько расширений для языка Python, и позволяет компилировать код расширения C, код штекеров в интерпретатор CPython.
источник
Вы должны различать язык и реализацию. Python - это язык,
Согласно Википедии , «язык программирования - это нотация для написания программ, которые являются спецификациями вычисления или алгоритма». Это означает, что это просто правила и синтаксис для написания кода. Отдельно у нас есть реализация языка программирования, которая в большинстве случаев является реальным интерпретатором или компилятором.
Python - это язык. CPython - это реализация Python на C. Jython - это реализация на Java и так далее.
Подводя итог: вы уже используете CPython (если вы скачали отсюда ).
источник
Даже у меня была та же проблема понимания того, как CPython, JPython, IronPython, PyPy отличаются друг от друга.
Итак, я хочу прояснить три вещи, прежде чем я начну объяснять:
Если вы хотите посмотреть байт-код CPython, тогда вы можете. Вот как вы можете:
Теперь давайте посмотрим на приведенный выше код. Строки с 1 по 6 являются определением функции. В строке 8 мы импортируем модуль 'dis', который можно использовать для просмотра промежуточного байт-кода Python (или, можно сказать, дизассемблера для байт-кода Python), который генерируется CPython (интерпретатором).
ПРИМЕЧАНИЕ . Я получил ссылку на этот код с IRC-канала #python: https://gist.github.com/nedbat/e89fa710db0edfb9057dc8d18d979f9c.
И затем, есть Jython, который написан на Java и в конечном итоге производит байт-код Java. Байт-код Java работает в среде выполнения Java, которая является реализацией виртуальной машины Java (JVM). Если это сбивает с толку, то я подозреваю, что вы понятия не имеете, как работает Java. С точки зрения непрофессионала, код Java (язык, а не компилятор) берется компилятором Java и выводит файл (который является байтовым кодом Java), который может быть запущен только с использованием JRE. Это сделано для того, чтобы после компиляции кода Java его можно было перенести на другие машины в формате байтового кода Java, который может выполняться только JRE. Если это все еще сбивает с толку, то вы можете взглянуть на эту веб-страницу .
Здесь вы можете спросить, является ли байт-код CPython переносимым, как Jython, я подозреваю, что нет. Байткодом производится в реализации CPython был специально для этого переводчиком , что делает его легким для дальнейшего выполнения кода (я подозреваю , что такое промежуточное производство байткодом, просто для удобства обработки делается во многих других переводчиков).
Итак, в Jython, когда вы компилируете свой код Python, вы получаете Java-байт-код, который может быть запущен на JVM.
Точно так же IronPython (написанный на языке C #) компилирует ваш код Python в Common Language Runtime (CLR), который является аналогичной технологией по сравнению с JVM, разработанным Microsoft.
источник
Эта статья подробно объясняет разницу между различными реализациями Python. Как написано в статье:
источник
Python - это язык: набор правил, которые можно использовать для написания программ. Есть несколько реализаций этого языка.
Независимо от того, какую реализацию вы используете, они делают одно и то же: берут текст вашей программы и интерпретируют ее, выполняя ее инструкции. Никто из них не компилирует ваш код на C или любой другой язык.
CPython - это оригинальная реализация, написанная на C. (Часть «C» в «CPython» относится к языку, который использовался для написания самого интерпретатора Python.)
Jython - это тот же язык (Python), но реализованный с использованием Java.
Интерпретатор IronPython был написан на C #.
Также есть PyPy - интерпретатор Python, написанный на Python. Сделай свой выбор :)
источник
implementation
означает, какой язык был использован для реализации Python, а не как будет реализован код Python. Преимущество использования CPython заключается в доступности C Run-time, а также в легкой интеграции с C / C ++.Поэтому CPython изначально был реализован с использованием
C
. В первоначальной реализации были и другие форки, которые позволяли Python использовать Java (JYthon) или .NET Runtime (IronPython).В зависимости от используемой реализации доступность библиотеки может варьироваться, например, Ctypes недоступны в Jython , поэтому любая библиотека, использующая ctypes, не будет работать в Jython. Точно так же, если вы хотите использовать Java-класс, вы не можете сделать это напрямую из CPython. Вам либо нужен клей (JEPP), либо вам нужно использовать Jython (Java-реализация Python)
источник
Вы должны знать, что CPython на самом деле не поддерживает многопоточность из-за глобальной блокировки интерпретатора . Он также не имеет механизмов оптимизации для рекурсии и имеет много других ограничений, которые пытаются заполнить другие реализации и библиотеки.
Вы должны взглянуть на эту страницу в Python Wiki.
Посмотрите на фрагменты кода на этой странице, это даст вам хорошее представление о том, что такое интерпретатор.
источник
Исходная и стандартная реализация Python обычно вызывается,
CPython
когда вы хотите сопоставить его с другими параметрами (в противном случае просто «Python» ). Это название происходит от того, что оно закодировано в портативномANSI C language code
. Это тот Python, который вы получаете с http://www.python.org , получаете вместе с дистрибутивами ActivePython и Enthought и автоматически получаете на большинстве компьютеров с Linux и Mac OS X. Если вы обнаружили на своем компьютере предустановленную версию Python, возможноCPython
, если ваша компания или организация не используют Python более специализированными способами.источник
Реализация языка программирования - это система для выполнения компьютерных программ.
Существует два основных подхода к реализации языка программирования:
Python - это интерпретируемый язык программирования высокого уровня, созданный Гвидо ван Россумом в 1991 году.
CPython - это эталонная версия вычислительного языка Python, написанного на C, созданного также Гвидо ван Россумом .
Другой список реализаций Python
Источник
источник