O que é todo esse barulho sobre Python e CPython (Jython, IronPython) , não entendi:
O python.org menciona que o CPython é:
A implementação "tradicional" do Python (apelidada de CPython)
ainda outra pergunta do Stack Overflow menciona que:
CPython é o interpretador de código de bytes padrão do Python, escrito em C.
Honestamente, eu não entendo o que essas duas explicações praticamente significam, mas o que eu pensei foi que, se eu usar o CPython, isso significa que quando eu executo um código python de amostra, ele o compila na linguagem C e depois o executa como se fosse C código
Então, o que exatamente é o CPython e como ele difere quando comparado ao python? Eu provavelmente deveria usar o CPython sobre Python? Em caso afirmativo, quais são suas vantagens?
Respostas:
Então, o que é CPython?
CPython é a implementação original do Python. É a implementação que você baixa do Python.org. As pessoas chamam de CPython para diferenciá-lo de outras implementações posteriores do Python e para distinguir a implementação do mecanismo de linguagem da linguagem de programação Python. própria .
A última parte é de onde vem sua confusão; você precisa manter o Python-the-language separado do que executa o código Python.
CPython acontece a ser implementado em C. Isso é apenas um detalhe de implementação, realmente. O CPython compila seu código Python em bytecode (transparente) e interpreta esse bytecode em um loop de avaliação.
O CPython também é o primeiro a implementar novos recursos; O desenvolvimento Python-the-language usa CPython como base; outras implementações seguem.
E o Jython, etc.?
Jython , IronPython e PyPy são as "outras" implementações atuais da linguagem de programação Python; estes são implementados em Java, C # e RPython (um subconjunto de Python), respectivamente. O Jython compila seu código Python no bytecode Java , para que seu código Python possa ser executado na JVM. O IronPython permite executar o Python no Microsoft CLR . E o PyPy, sendo implementado em (um subconjunto) do Python, permite executar o código Python mais rápido que o CPython, o que, com razão, deve surpreender sua mente. :-)
Realmente compilando para C
Portanto, o CPython não traduz seu código Python para C por si só. Em vez disso, ele executa um loop de intérprete. Não é um projeto que faz traduzir código Python-ish para C, e que é chamado Cython . O Cython adiciona algumas extensões à linguagem Python e permite que você compile seu código em extensões C, código que se conecta ao interpretador CPython.
fonte
Você precisa distinguir entre um idioma e uma implementação. Python é uma linguagem,
Segundo a Wikipedia , "Uma linguagem de programação é uma notação para escrever programas, que são especificações de uma computação ou algoritmo". Isso significa que são simplesmente as regras e a sintaxe para escrever código. Separadamente, temos uma implementação de linguagem de programação que, na maioria dos casos, é o intérprete ou compilador real.
Python é uma linguagem. CPython é a implementação do Python em C. Jython é a implementação em Java e assim por diante.
Para resumir: Você já está usando o CPython (se você baixou aqui ).
fonte
Até eu tive o mesmo problema ao entender como CPython, JPython, IronPython, PyPy são diferentes entre si.
Então, estou disposto a esclarecer três coisas antes de começar a explicar:
Se você quiser examinar o bytecode do CPython, poderá. Veja como você pode:
Agora, vamos dar uma olhada no código acima. As linhas 1 a 6 são uma definição de função. Na linha 8, importamos o módulo 'dis' que pode ser usado para visualizar o bytecode intermediário do Python (ou você pode dizer, desmontador do bytecode do Python) gerado pelo CPython (intérprete).
NOTA : Eu obtive o link para esse código no canal #python IRC: https://gist.github.com/nedbat/e89fa710db0edfb9057dc8d18d979f9c
E há o Jython, que é escrito em Java e acaba produzindo código de bytes Java. O código de byte Java é executado no Java Runtime Environment, que é uma implementação da Java Virtual Machine (JVM). Se isso é confuso, suspeito que você não tenha idéia de como o Java funciona. Em termos leigos, o código Java (a linguagem, não o compilador) é obtido pelo compilador Java e gera um arquivo (que é o código de bytes Java) que pode ser executado apenas usando um JRE. Isso é feito para que, uma vez que o código Java seja compilado, ele possa ser portado para outras máquinas no formato de código de bytes Java, que possa ser executado apenas pelo JRE. Se isso ainda é confuso, você pode dar uma olhada nesta página da web .
Aqui, você pode perguntar se o bytecode do CPython é portátil como o Jython, suspeito que não. O bytecode produzido na implementação do CPython foi específico para esse intérprete, facilitando a execução adicional do código (também suspeito que essa produção intermediária de bytecode seja apenas pela facilidade de processamento em muitos outros intérpretes).
Portanto, no Jython, quando você compila seu código Python, você acaba com o código de bytes Java, que pode ser executado em uma JVM.
Da mesma forma, o IronPython (escrito em linguagem C #) compila seu código Python para Common Language Runtime (CLR), que é uma tecnologia semelhante à JVM, desenvolvida pela Microsoft.
fonte
Este artigo explica completamente a diferença entre diferentes implementações do Python. Como o artigo coloca:
fonte
Python é uma linguagem: um conjunto de regras que podem ser usadas para escrever programas. Existem várias implementações dessa linguagem.
Não importa qual implementação você faça, eles fazem praticamente a mesma coisa: pegue o texto do seu programa e interprete-o, executando suas instruções. Nenhum deles compila seu código em C ou em qualquer outro idioma.
CPython é a implementação original, escrita em C. (A parte "C" em "CPython" refere-se à linguagem que foi usada para escrever o próprio interpretador Python.)
Jython é a mesma linguagem (Python), mas implementada usando Java.
O interpretador IronPython foi escrito em C #.
Há também PyPy - um intérprete Python escrito em Python. Faça a sua escolha :)
fonte
implementation
significa que linguagem foi usada para implementar o Python e não como o código do python seria implementado. A vantagem de usar o CPython é a disponibilidade do tempo de execução C e a fácil integração com o C / C ++.Então o CPython foi originalmente implementado usando
C
. Havia outros garfos na implementação original que permitiam ao Python aproveitar Java (JYthon) ou .NET Runtime (IronPython).Com base em qual implementação você usa, a disponibilidade da biblioteca pode variar, por exemplo, Ctypes não está disponível no Jython , portanto, qualquer biblioteca que use ctypes não funcionaria no Jython. Da mesma forma, se você deseja usar uma classe Java, não pode fazê-lo diretamente do CPython. Você precisa de uma cola (JEPP) ou precisa usar o Jython (a implementação Java do Python)
fonte
Você deve saber que o CPython realmente não suporta multithreading por causa do bloqueio global de intérpretes . Ele também não possui mecanismos de otimização para recursão e possui muitas outras limitações que outras implementações e bibliotecas tentam preencher.
Você deve dar uma olhada nesta página no wiki do python.
Veja os trechos de código nesta página, e você terá uma boa idéia do que é um intérprete.
fonte
A implementação original e padrão do Python geralmente é chamada
CPython
quando você deseja contrastá-lo com as outras opções ( e simplesmente “Python”, caso contrário ). Esse nome vem do fato de estar codificado em portátilANSI C language code
. Este é o Python que você busca em http://www.python.org , obtém as distribuições ActivePython e Enthought e possui automaticamente na maioria das máquinas Linux e Mac OS X. Se você encontrou uma versão pré-instalada do Python em sua máquina, provavelmente éCPython
, a menos que sua empresa ou organização esteja usando o Python de maneiras mais especializadas.fonte
Uma implementação de linguagem de programação é um sistema para executar programas de computador.
Existem duas abordagens gerais para a implementação da linguagem de programação:
Pitão é uma linguagem de programação interpretada de alto nível criada por Guido van Rossum em 1991.
CPython é a versão de referência da linguagem de computação Python, escrita em C criada por Guido van Rossum .
Outra lista de implementações em Python
Fonte
fonte