9. 최상위 요소들¶
파이썬 인터프리터는 여러 가지 출처로부터 입력을 얻을 수 있다: 표준 입력이나 프로그램 인자로 전달된 스크립트, 대화형으로 입력된 것, 모듈 소스 파일 등등. 이 장은 이 경우들에 사용되는 문법을 제공한다.
9.1. 완전한 파이썬 프로그램¶
언어 규격이 어떤 식으로 언어 인터프리터가 실행되는지를 미리 규정할 필요는 없지만, 완전한 파이썬 프로그램이라는 개념을 갖는 것은 쓸모가 있다. 완전한 파이썬 프로그램은 최소한으로 초기화된 환경에서 실행된다: 모든 내장과 표준 모듈이 제공되지만, sys
(각종 시스템 서비스들)와 builtins
(내장 함수들, 예외들, None
)과 __main__
이외의 어느 것도 초기화되지 않았다. 마지막 것은 완전한 프로그램의 실행을 위한 지역과 전역 이름 공간을 제공하는 데 사용된다.
완전한 파이썬 프로그램의 문법은 다음 섹션에서 설명되는 파일 입력의 경우다.
인터프리터는 대화형으로 실행될 수도 있다; 이 경우, 완전한 프로그램을 읽어서 실행하지 않고, 한 번에 한 문장 (복합문도 가능하다) 씩 읽어서 실행한다. 초기 환경은 완전한 프로그램과 같다; 각 문장은 __main__
의 이름 공간에서 실행된다.
A complete program can be passed to the interpreter
in three forms: with the -c
string command line option, as a file
passed as the first command line argument, or as standard input. If the file
or standard input is a tty device, the interpreter enters interactive mode;
otherwise, it executes the file as a complete program.
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*