파이썬 인터프리터는 표준 입력 또는 프로그램 인수로 전달된 스크립트, 대화식으로 입력된 모듈 소스 파일 등 여러 소스에서 입력을 얻을 수 있습니다. 이 장에서는 이러한 경우에 사용되는 구문을 제공합니다.
9.1. Complete Python programs
언어 사양이 언어 인터프리터가 호출되는 방법을 규정할 필요는 없지만 완전한 Python 프로그램의 개념을 갖는 것이 유용합니다. 완전한 Python 프로그램은 최소한으로 초기화된 환경에서 실행됩니다. 모든 내장 및 표준 모듈을 사용할 수 있지만 sys(다양한 시스템 서비스), 내장(내장 함수, 예외 및 없음) 및 __main__을 제외하고는 초기화되지 않았습니다. . 후자는 전체 프로그램 실행을 위한 로컬 및 전역 네임스페이스를 제공하는 데 사용됩니다.
완전한 Python 프로그램의 구문은 다음 섹션에서 설명하는 파일 입력용 구문입니다.
인터프리터는 대화식 모드에서도 호출할 수 있습니다. 이 경우 완전한 프로그램을 읽고 실행하는 것이 아니라 한 번에 하나의 명령문(아마도 복합)을 읽고 실행합니다. 초기 환경은 완전한 프로그램의 환경과 동일합니다. 각 명령문은 __main__의 네임스페이스에서 실행됩니다.
완전한 프로그램은 세 가지 형식으로 인터프리터에 전달될 수 있습니다: -c 문자열 명령줄 옵션 사용, 첫 번째 명령줄 인수로 전달된 파일 또는 표준 입력. 파일이나 표준 입력이 tty 장치이면 인터프리터는 대화형 모드로 들어갑니다. 그렇지 않으면 파일을 완전한 프로그램으로 실행합니다.
9.2. File input
비대화형 파일에서 읽은 모든 입력 형식은 다음과 같습니다.
file_input ::= (NEWLINE | statement)*
이 구문은 다음 상황에서 사용됩니다.
- 완전한 Python 프로그램을 구문 분석할 때(파일 또는 문자열에서);
- 모듈을 파싱할 때;
- exec() 함수에 전달된 문자열을 구문 분석할 때;
9.3. Interactive input
대화형 모드의 입력은 다음 문법을 사용하여 구문 분석됩니다.
interactive_input ::= [stmt_list] NEWLINE | compound_stmt NEWLINE
대화형 모드에서는 (최상위) 복합 명령문 뒤에 빈 줄이 와야 합니다. 이는 구문 분석기가 입력의 끝을 감지하는 데 필요합니다.
9.4. Expression input
eval()은 표현식 입력에 사용됩니다. 선행 공백을 무시합니다. eval()에 대한 문자열 인수는 다음 형식이어야 합니다.
eval_input ::= expression_list NEWLINE*
Source: https://docs.python.org/3/reference/toplevel_components.html