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