9. 최상위 요소들

파이썬 인터프리터는 여러 가지 출처로부터 입력을 얻을 수 있습니다: 표준 입력이나 프로그램 인자로 전달된 스크립트, 대화형으로 입력된 것, 모듈 소스 파일 등등. 이 장은 이 경우들에 사용되는 문법을 제공합니다.

9.1. 완전한 파이썬 프로그램

언어 규격이 어떤 식으로 언어 인터프리터가 실행되는지를 미리 규정할 필요는 없지만, 완전한 파이썬 프로그램이라는 개념을 갖는 것은 쓸모가 있습니다. 완전한 파이썬 프로그램은 최소한으로 초기화된 환경에서 실행됩니다: 모든 내장과 표준 모듈이 제공되지만, sys (각종 시스템 서비스들)와 builtins (내장 함수들, 예외들, None)과 __main__ 이외의 어느 것도 초기화되지 않았습니다. 마지막 것은 완전한 프로그램의 실행을 위한 지역과 전역 이름 공간을 제공하는 데 사용됩니다.

완전한 파이썬 프로그램의 문법은 다음 섹션에서 설명되는 파일 입력의 경우입니다.

인터프리터는 대화형으로 실행될 수도 있습니다; 이 경우, 완전한 프로그램을 읽어서 실행하지 않고, 한 번에 한 문장 (복합문도 가능하다) 씩 읽어서 실행합니다. 초기 환경은 완전한 프로그램과 같습니다; 각 문장은 __main__ 의 이름 공간에서 실행됩니다.

완전한 프로그램은 세 가지 형태로 인터프리터에게 전달될 수 있습니다: -c string 명령행 옵션으로, 첫 번째 명령행 인자로 전달된 파일로, 표준 입력으로. 파일이나 표준입력이 tty 장치면, 인터프리터는 대화형 모드로 돌입합니다; 그렇지 않으면 그 파일을 완전한 프로그램으로 실행합니다.

9.2. 파일 입력

비대화형 파일로부터 읽힌 모든 입력은 같은 형태를 취합니다:

file_input ::=  (NEWLINE | statement)*

이 문법은 다음과 같은 상황에서 사용됩니다:

  • (파일이나 문자열로부터 온) 완전한 파이썬 프로그램을 파싱할 때;

  • 모듈을 파싱할 때;

  • exec() 함수로 전달된 문자열을 파싱할 때;

9.3. 대화형 입력

대화형 모드에서의 입력은 다음과 같은 문법 규칙을 사용합니다:

interactive_input ::=  [stmt_list] NEWLINE | compound_stmt NEWLINE

(최상위) 복합문은 대화형 모드에서 빈 줄을 붙여줘야 함에 유념해야 합니다; 파서가 입력의 끝을 감지하는 데 필요합니다.

9.4. 표현식 입력

표현식 입력을 위해 eval() 이 사용됩니다. 앞에 오는 공백을 무시합니다. eval() 의 문자열 인자는 다음과 같은 형식을 취해야 합니다:

eval_input ::=  expression_list NEWLINE*