자주 듣는 질문은 다음과 같습니다. Python은 해석된 언어인가요? 컴파일 될까요? 이 질문은 생각보다 대답하기가 쉽지 않습니다. 세상을 이해하는 많은 사람들처럼 그들도 단순한 모델을 기반으로 어떤 것을 판단하는 데 익숙합니다. 사실, 여기에는 아주 많은 세부 사항이 포함되어 있습니다.
일반적으로 컴파일이란 고급 언어를 CPU에서 실행할 수 있는 기계어 코드로 변환하는 것을 의미합니다. C를 컴파일할 때, 이것이 바로 당신이 하는 일입니다. 컴파일 결과는 바이너리 실행 파일이며 시스템은 이 프로그램을 직접 실행할 수 있습니다.
반대로 설명의 의미는 프로그램이 실행될 때마다 소스 파일의 코드 한 줄을 읽고 해당 작업을 수행하며 한 줄씩 반복한다는 의미입니다. 물론 이것이 소위 스크립팅 언어가 작동하는 방식입니다.
하지만 사실 위의 정의에는 한계가 너무 많습니다. 실제 언어는 일반적으로 보다 유용하고 강력한 기능을 갖기 위해 다양한 구현 방법을 채택합니다. 컴파일은 보다 일반적인 것으로 이해할 수 있습니다. 즉, 한 언어를 다른 언어 형식으로 변환하는 것입니다. 일반적으로 C를 기계어 코드로 변환하는 등 소스 언어가 대상 언어보다 더 발전합니다. 물론 JavaScript 8에서 JavaScript 5로의 변환도 일종의 컴파일입니다.
Python에서 소스 코드는 바이트코드#🎜 🎜#라고 하는 하위 수준 형식으로 컴파일됩니다. 바이트코드는 CPU의 명령어 세트와 유사한 일련의 명령어입니다. 그러나 바이트코드는 CPU에 의해 직접 실행되지 않고 가상 머신에서 실행됩니다. 물론 여기서의 가상머신은 운영체제 환경 전체를 모방한 것이 아니라 바이트코드 실행을 위한 환경만을 제공한다.
파이썬 코드의 작은 부분과 해당 바이트코드를 살펴보겠습니다 바이트코드의 내용 살펴보기 그 후 , 형식화된 문자열 형식 f'...'의 작동 원리는 내부 문자열을 일련의 리터럴 문자열과 변수로 변환한 다음 + 기호를 사용하여 연결하는 것임을 알 수 있습니다. dis는 Python 표준 라이브러리의 디스어셈블리 모듈로, Python 코드의 바이트코드 정보를 표시할 수 있습니다. 위에서 언급한 바이트코드를 실행하는 가상 머신은 Python 자체를 포함한 모든 언어로 구현될 수 있습니다. 관심이 있으시면 GitHub에서 nedbat/byterun 프로젝트를 확인해 보세요. 이 프로젝트는 학습용으로 사용할 수 있지만 프로덕션 환경에는 적합하지 않습니다. 그러나 Python을 실행하면 컴파일 과정이 전혀 느껴지지 않습니다. 컴파일러가 무엇인지 표시되지 않습니다. .py 파일을 실행하면 자동으로 컴파일됩니다. 필요할 때 컴파일됩니다. 이는 JAVA와는 다릅니다. JAVA 코드를 작성하고 실행할 때마다 수동으로 .class 파일로 컴파일한 후 실행해야 합니다. JAVA를 컴파일 언어, Python을 해석 언어라고 부르는 이유도 바로 이 때문입니다. 하지만 실제로는 두 언어 모두 실행 시 먼저 바이트코드로 컴파일된 후 실행을 위해 가상머신으로 넘겨진다. Python에는 대화형 명령줄이라는 중요한 기능도 있습니다. Python 문 한 줄을 입력하고 즉시 Enter 키를 눌러 실행할 수 있습니다. 실제로 이 과정에서도 파이썬은 먼저 바이트코드로 변환된 후 실행된다. 이 대화형 명령줄 기능은 많은 컴파일된 언어에서 사용할 수 없습니다. 또한 컴파일러에 대한 명시적인 호출이 없기 때문에 많은 사람들이 Python 소스 파일을 실행하는 프로그램을 Python 인터프리터라고 부릅니다. 비교적 간단하지만 그래도 추가하고 싶습니다. C나 JAVA와 같은 일부 컴파일된 언어에도 대화형 명령줄이 있지만 이는 이러한 언어의 초점이 아닙니다. JAVA는 처음에 바이트코드로 컴파일된 후 실행되었으며, 나중에 JIT(Just-In-Time Compilation) 기술을 사용하여 C와 유사한 기계어 코드로 직접 컴파일될 수 있습니다. 위의 설명에서 알 수 있듯이 해석과 편집은 완전히 분리될 수 없습니다. 우리는 기존 프로그래밍 언어를 분류하기 위해 몇 가지 단어를 사용하고 싶은 경우가 많지만 실제로는 그렇게 하기가 너무 어렵습니다. 마지막으로 주목해야 할 점은 코드가 실행되는 방식은 언어 구현의 문제이지 언어의 기능이 아니라는 것입니다. 위에서는 Python에 대해 이야기하고 있지만 실제로는 CPython에 대한 설명입니다. CPython은 인터프리터입니다. 인터프리터가 Python의 기본 인터프리터이기도 한 C로 작성되었기 때문에 그렇게 불립니다. 물론 다른 인터프리터도 많이 있습니다. 예를 들어 PyPy는 JIT 기술을 사용하는 또 다른 인터프리터이며 CPython에 비해 실행 속도가 크게 향상됩니다. 제목의 질문으로 돌아가서 Python을 해석 언어라고 부르는 이유는 컴파일 작업을 명시적으로 호출하지 않고 해석된 특성을 더 많이 보여주기 때문입니다. 그러나 실제로 컴파일은 존재합니다. 이를 컴파일하는 방법은 언어의 구현, 즉 인터프리터의 설계에 따라 다릅니다. 더 많은 Python 관련 기술 기사를 보려면Python Tutorial 열을 방문하여 알아보세요!
위 내용은 파이썬을 컴파일해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!