Python Language Reference > 1. Introduction

이 참조 설명서는 Python 프로그래밍 언어에 대해 설명합니다. 튜토리얼이 아닙니다.

가능한 한 정확하게 하려고 노력하면서 구문과 어휘 분석을 제외한 모든 것에 형식적인 사양보다는 영어를 사용하기로 했습니다. 이렇게 하면 일반 독자가 문서를 더 쉽게 이해할 수 있지만 모호할 여지가 있습니다. 결과적으로, 만약 당신이 Mars 출신이고 이 문서만으로 Python을 다시 구현하려고 시도했다면, 추측해야 할 수도 있고 사실 꽤 다른 언어를 구현하게 될 것입니다. 반면에 Python을 사용하고 있고 언어의 특정 영역에 대한 정확한 규칙이 무엇인지 궁금하다면 여기에서 확실히 찾을 수 있을 것입니다. 언어에 대한 보다 공식적인 정의를 보고 싶다면 자원봉사를 하거나 복제 기계를 발명할 수 있습니다 :-).

언어 참조 문서에 너무 많은 구현 세부 정보를 추가하는 것은 위험합니다. 구현이 변경될 수 있고 동일한 언어의 다른 구현이 다르게 작동할 수 있습니다. 반면에 CPython은 널리 사용되는 Python 구현 중 하나이며(대체 구현이 계속 지원되고 있음) 특히 구현이 추가 제한을 부과하는 경우 특정 단점을 언급할 가치가 있습니다. 따라서 텍스트 전체에 걸쳐 짧은 “구현 참고 사항”이 표시됩니다.

모든 Python 구현에는 여러 내장 및 표준 모듈이 함께 제공됩니다. 이들은 Python 표준 라이브러리에 문서화되어 있습니다. 몇 가지 기본 제공 모듈은 언어 정의와 중요한 방식으로 상호 작용할 때 언급됩니다.

1.1. Alternate Implementations

지금까지 가장 인기 있는 Python 구현이 하나 있지만, 다른 청중이 특히 관심을 갖는 몇 가지 대체 구현이 있습니다.

알려진 구현은 다음과 같습니다.

C파이썬
이것은 C로 작성된 Python의 원본이자 가장 유지 관리된 구현입니다. 일반적으로 새로운 언어 기능이 여기에 먼저 나타납니다.

자이썬
자바로 구현된 파이썬. 이 구현은 Java 응용 프로그램용 스크립팅 언어로 사용하거나 Java 클래스 라이브러리를 사용하여 응용 프로그램을 만드는 데 사용할 수 있습니다. 또한 Java 라이브러리에 대한 테스트를 만드는 데 자주 사용됩니다. 자세한 내용은 Jython 웹사이트에서 확인할 수 있습니다.

.NET용 파이썬
이 구현은 실제로 CPython 구현을 사용하지만 관리되는 .NET 애플리케이션이며 .NET 라이브러리를 사용할 수 있게 합니다. Brian Lloyd가 만들었습니다. 자세한 내용은 Python for .NET 홈 페이지를 참조하세요.

철파이썬
.NET용 대체 Python입니다. Python.NET과 달리 IL을 생성하고 Python 코드를 .NET 어셈블리로 직접 컴파일하는 완전한 Python 구현입니다. Jython의 창시자인 Jim Hugunin이 만들었습니다. 자세한 내용은 IronPython 웹 사이트를 참조하십시오.

파이파이
Python으로 완전히 작성된 Python 구현입니다. 스택리스 지원 및 Just in Time 컴파일러와 같은 다른 구현에서는 볼 수 없는 몇 가지 고급 기능을 지원합니다. 이 프로젝트의 목표 중 하나는 인터프리터(Python으로 작성되었으므로)를 더 쉽게 수정할 수 있도록 하여 언어 자체에 대한 실험을 장려하는 것입니다. 추가 정보는 PyPy 프로젝트의 홈페이지에서 확인할 수 있습니다.

이러한 각각의 구현은 이 설명서에 설명된 언어와 어떤 식으로든 다르거나 표준 Python 설명서에서 다루는 것 이상의 특정 정보를 소개합니다. 사용 중인 특정 구현에 대해 알아야 할 기타 사항을 확인하려면 구현 관련 문서를 참조하세요.

1.2. Notation

어휘 분석 및 구문 설명은 수정된 BNF 문법 표기법을 사용합니다. 이것은 다음 정의 스타일을 사용합니다.

name      ::=  lc_letter (lc_letter | "_")*
lc_letter ::=  "a"..."z"

첫 번째 줄은 이름이 lc_letter이고 그 뒤에 0개 이상의 lc_letter와 밑줄이 오는 순서임을 나타냅니다. lc_letter는 ‘a’부터 ‘z’까지의 단일 문자 중 하나입니다. (이 규칙은 이 문서의 어휘 및 문법 규칙에 정의된 이름에 대해 실제로 준수됩니다.)

각 규칙은 이름(규칙에 의해 정의된 이름)과 ::=로 시작합니다. 세로 막대(|)는 대안을 구분하는 데 사용됩니다. 이 표기법에서 가장 구속력이 적은 연산자입니다. 별표(*)는 이전 항목이 0회 이상 반복되었음을 의미합니다. 마찬가지로 더하기(+)는 하나 이상의 반복을 의미하고 대괄호([ ])로 묶인 구는 0개 또는 1개의 발생을 의미합니다(즉, 동봉된 구는 선택 사항임). * 및 + 연산자는 최대한 긴밀하게 바인딩합니다. 괄호는 그룹화에 사용됩니다. 리터럴 문자열은 따옴표로 묶습니다. 공백은 토큰을 구분할 때만 의미가 있습니다. 규칙은 일반적으로 한 줄에 포함됩니다. 대안이 많은 규칙은 수직 막대로 시작하는 첫 번째 줄 다음에 각 줄로 번갈아 서식을 지정할 수 있습니다.

어휘 정의(위의 예)에서 두 가지 규칙이 더 사용됩니다. 세 개의 점으로 구분된 두 개의 리터럴 문자는 주어진(포함) ASCII 문자 범위에서 단일 문자의 선택을 의미합니다. 각괄호(<…>) 사이의 구는 정의된 기호에 대한 비공식 설명을 제공합니다. 예를 들어, 필요한 경우 ‘제어 문자’의 개념을 설명하는 데 사용할 수 있습니다.

사용된 표기법은 거의 동일하지만 어휘 정의와 구문 정의 사이에는 큰 차이가 있습니다. 어휘 정의는 입력 소스의 개별 문자에서 작동하는 반면 구문 정의는 입력 소스에서 생성된 토큰 스트림에서 작동합니다. 어휘 분석. 다음 장(“어휘 분석”)에서 BNF의 모든 사용은 어휘 정의입니다. 후속 장에서 사용되는 것은 구문 정의입니다.

Source:https://docs.python.org/3/reference/introduction.html