9. 최상위 구성 요소

9. 최상위 구성 요소 (Top-level components)

Python 인터프리터는 표준 입력이나 프로그램 인자로 전달되는 스크립트, 대화형으로 입력되는 텍스트, 모듈 소스 파일 등 여러 소스에서 입력을 받을 수 있어요. 이 장에서는 이런 경우에 사용되는 문법을 설명합니다.

출처: 9. Top-level components

본문

Python 인터프리터는 여러 소스에서 입력을 받을 수 있어요: 표준 입력이나 프로그램 인자로 전달되는 스크립트, 대화형으로 입력되는 텍스트, 모듈 소스 파일 등에서요. 이 장에서는 이런 경우에 사용되는 문법을 설명할게요.

9.1. 완전한 Python 프로그램 (Complete Python programs)

언어 사양이 언어 인터프리터를 어떻게 호출해야 하는지 규정할 필요는 없지만, 완전한 Python 프로그램이라는 개념을 갖는 것은 유용해요. 완전한 Python 프로그램은 최소한으로 초기화된 환경에서 실행돼요: 모든 내장 모듈과 표준 모듈을 사용할 수 있지만, sys(다양한 시스템 서비스), builtins(내장 함수, 예외, None)와 __main__을 제외하고는 어떤 것도 초기화되지 않았어요. __main__은 완전한 프로그램 실행을 위한 지역 및 전역 네임스페이스를 제공하는 데 사용돼요.

완전한 Python 프로그램의 문법은 다음 섹션에서 설명하는 파일 입력용 문법이에요.

인터프리터는 대화형 모드로도 호출될 수 있어요. 이 경우 완전한 프로그램을 읽고 실행하는 대신, 한 번에 하나의 문장(아마도 복합 문장)을 읽고 실행해요. 초기 환경은 완전한 프로그램과 동일하고, 각 문장은 __main__의 네임스페이스에서 실행돼요.

완전한 프로그램은 세 가지 형태로 인터프리터에 전달될 수 있어요: -c 문자열 명령줄 옵션으로, 첫 번째 명령줄 인자로 전달되는 파일로, 또는 표준 입력으로요. 파일이나 표준 입력이 tty 장치이면 인터프리터는 대화형 모드로 들어가고, 그렇지 않으면 그 파일을 완전한 프로그램으로 실행해요.

9.2. 파일 입력 (File input)

비대화형 파일에서 읽는 모든 입력은 같은 형식을 가져요:

file_input: (NEWLINE | statement)* ENDMARKER

이 문법은 다음 상황에서 사용돼요:

  • 완전한 Python 프로그램을 파싱할 때 (파일에서 또는 문자열에서);
  • 모듈을 파싱할 때;
  • exec() 함수에 전달된 문자열을 파싱할 때.

9.3. 대화형 입력 (Interactive input)

대화형 모드의 입력은 다음 문법으로 파싱돼요:

interactive_input: [stmt_list] NEWLINE | compound_stmt NEWLINE | ENDMARKER

대화형 모드에서는 (최상위) 복합 문장 뒤에 빈 줄이 따라와야 한다는 점을 유의하세요. 파서가 입력의 끝을 감지하도록 돕는 데 필요해요.

9.4. 표현식 입력 (Expression input)

eval()은 표현식 입력에 사용돼요. 선행 공백은 무시해요. eval()의 문자열 인자는 다음 형식을 가져야 해요:

eval_input: expression_list NEWLINE* ENDMARKER

더 알아보기 (Learn more)