2009-10-29 6 views
9

CPython의 컨텍스트에서 "바이트 코드 인터프리터"라는 개념을 실제로 얻지는 못합니다. 누군가가 전체 그림을 밝힐 수 있습니까?CPython은 바이트 코드 인터프리터입니까?

CPython이 pyc 파일 (바이트 코드 파일?)을 컴파일하고 실행한다는 것을 의미합니까? 그렇다면 py 파일을 pyc 파일로 컴파일하는 것은 무엇입니까? 그리고 자이 썬은 CPython과 어떻게 다릅니 까? (다른 언어로 구현되는 것을 제외하고).

나는 파이썬이 C++ 해석을 읽을 수도있다. 이 올바른지? 그게 무슨 뜻 이죠?

저는 여전히 파이썬에 대해 매우 익숙합니다. 그래서 내가 바보 같은 질문을한다면 용서해주십시오 ... 고마워요!

답변

12

CPython은 C로 파이썬을 구현 한 것으로 첫 번째 구현이며 여전히 사람들이 파이썬에 관해 이야기 할 때 가장 중요한 구현물입니다. .py 파일을 .pyc 파일로 컴파일합니다. .pyc 파일에는 바이트 코드가 들어 있습니다. CPython 구현은 또한 이러한 바이트 코드를 해석합니다. CPython은 C++로 작성되지 않았으므로 C 언어입니다.

.py에서 .pyc 로의 컴파일은 필요에 따라 투명하게 발생합니다. .py 파일을 실행하면 필요할 경우 .pyc 파일로 컴파일되고 .pyc 파일은 해석됩니다.

Jython은 (C 대신 Java로 구현되는 것 외에도) .py 파일을 .class 파일로 컴파일하여 JVM에서 실행할 수 있기 때문에 다릅니다.

+0

자이 썬은 파이썬 코드를 Java로 변환 한 다음 Jave 바이트 코드로 컴파일합니까? – Nope

+0

자바를 중간 형식으로 생성하는지 여부는 알 수 없습니다. –

+3

AFAIK Jython은 요청에 따라 Java를 중간 형식으로 생성 할 수 있지만 대개 Java 바이트 코드 만 생성합니다. – MAK

7

CPython은 바이트 코드 컴파일러와 인터프리터 (가상 컴퓨터)입니다.

기존의 사전 컴파일러 파일 (.pyc)이 없는지 자동으로 감지하여 코드를 컴파일하고 저장합니다.

10

첫 번째 : CPython이 바이트 코드 인터프리터라는 사실은 파이썬 사용자로서 중요하지 않습니다. 코드를 작성하고 작동 방식으로 전환하는 것에 대해 걱정하지 마십시오.

질문에 대답하고 호기심을 만족시키기 위해 다음과 같은 일이 발생합니다. CPython은 python 소스 코드를 읽고이를 .pyc 파일에 저장된 Python 바이트 코드로 컴파일합니다. 그런 다음 바이트 코드 인터프리터를 사용하여 해당 코드를 실행합니다. 이 디자인은 파이썬의 구문 분석을 실행과 분리하여 인터프리터의 두 부분을 더 단순하게 만듭니다.

자이 썬은 파이썬 소스를 읽고 자바 바이트 코드를 출력한다. 자바 바이트 코드는 JVM에 의해 해석된다. 하나는 java 바이트 코드가 표준화되고 문서화 된 반면 CPython 바이트 코드는 파이썬 내부에있는 것으로 간주되며 언제든지 바뀔 수 있습니다. 둘째, JVM은 CPython 인터프리터보다 훨씬 복잡하다. JVM은 세계에서 가장 진보 된 JIT 엔진 중 하나를 가지고 있지만 CPython 인터프리터는 매우 간단합니다.

+1

늦었지 만 매우 자세한 설명입니다. 고맙습니다! – huy

관련 문제