Содержание страницы
9. Компоненты верхнего уровня¶Top-level components
Интерпретатор Python может получать данные из нескольких источников: из скрипта, переданного ему через стандартный ввод или как аргумент программы, при интерактивном вводе, из файла исходного кода модуля и т.д. В этой главе описывается синтаксис, используемый в этих случаях.
9.1. Полные программы на Python¶Complete Python programs
Хотя спецификация языка не обязана предписывать, как вызывается интерпретатор языка, полезно иметь представление о полной программе Python. Полная программа Python выполняется в минимально инициализированном окружении: все встроенные и стандартные модули доступны, но ни один из них не инициализирован, кроме sys (различные системные сервисы), builtins (встроенные функции, исключения и None) и __main__. Последний используется для предоставления локального и глобального пространства имён для выполнения полной программы.
Синтаксис полной программы на Python – это синтаксис ввода из файла, описанный в следующем разделе.
Интерпретатор также может быть вызван в интерактивном режиме; в этом случае он не читает и не выполняет полную программу, а читает и выполняет по одному оператору (возможно составному) за раз. Начальное окружение идентично окружению полной программы; каждый оператор выполняется в пространстве имён __main__.
В Unix полная программа может быть передана интерпретатору в трёх формах: с опцией командной строки -c string, как файл, переданный в качестве первого аргумента командной строки, или через стандартный ввод. Если файл или стандартный ввод являются 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*