Содержание страницы
9. Компоненты верхнего уровня¶Top-level components
Интерпретатор Python может получать данные из нескольких источников: из скрипта, переданного ему через стандартный ввод или как аргумент программы, при интерактивном вводе, из файла исходного кода модуля и т.д. В этой главе описывается синтаксис, используемый в этих случаях.
9.1. Полные программы на Python¶Complete Python programs
Хотя спецификация языка не должна предписывать, как вызывается интерпретатор языка, полезно иметь понятие полной программы Python. Полная программа Python выполняется в минимально инициализированном окружении: все встроенные и стандартные модули доступны, но ни один не инициализирован, за исключением sys (различные системные службы), builtins (встроенные функции, исключения и None) и __main__. Последний используется для предоставления локального и глобального пространства имён для выполнения полной программы.
Синтаксис полной программы на Python – это синтаксис ввода из файла, описанный в следующем разделе.
Интерпретатор также может быть вызван в интерактивном режиме; в этом случае он
не читает и не выполняет полную программу, а читает и выполняет по одному оператору
(возможно, составному) за раз. Начальное окружение идентично окружению полной
программы; каждый оператор выполняется в пространстве имён __main__.
Под Unix полную программу можно передать интерпретатору тремя способами:
с помощью -c строки в командной строке, в виде файла, переданного в качестве
первого аргумента командной строки, или через стандартный ввод. Если файл или стандартный
ввод является tty-устройством, интерпретатор переходит в интерактивный режим; в противном случае он
выполняет файл как полную программу.
9.2. Ввод из файла¶File input
Весь ввод, читаемый из неинтерактивных файлов, имеет одну и ту же форму:
file_input ::= (NEWLINE | statement)*
Этот синтаксис используется в следующих ситуациях:
- при разборе полной программы на Python (из файла или из строки);
- при разборе модуля;
- при разборе строки, переданной функции
exec();
9.3. Интерактивный ввод¶Interactive input
Ввод в интерактивном режиме разбирается с использованием следующей грамматики:
interactive_input ::= [stmt_list] NEWLINE |compound_stmtNEWLINE
Обратите внимание, что в интерактивном режиме за (составным) оператором верхнего уровня должна следовать пустая строка; это необходимо, чтобы помочь синтаксическому анализатору обнаружить конец ввода.
9.4. Ввод выражений¶Expression input
eval() используется для ввода выражений. Он игнорирует начальные пробелы. Строковый аргумент для eval() должен иметь следующую форму:
eval_input ::= expression_list NEWLINE*