Документация Python неофициальный перевод
Содержание страницы

Компоненты верхнего уровняTop-level components

Интерпретатор Python может получать данные из нескольких источников: из скрипта, переданного ему через стандартный ввод или как аргумент программы, при интерактивном вводе, из файла исходного кода модуля и т.д. В этой главе описывается синтаксис, используемый в этих случаях.

Полные программы PythonComplete Python programs

Хотя спецификация языка не обязана предписывать, как вызывается интерпретатор языка, полезно иметь представление о полной программе Python. Полная программа Python выполняется в минимально инициализированном окружении: все встроенные и стандартные модули доступны, но ни один из них не инициализирован, кроме sys (различные системные сервисы), builtins (встроенные функции, исключения и None) и __main__. Последний используется для предоставления локального и глобального пространства имён для выполнения полной программы.

Синтаксис полной программы на Python – это синтаксис ввода из файла, описанный в следующем разделе.

Интерпретатор также может быть вызван в интерактивном режиме; в этом случае он не читает и не выполняет полную программу, а читает и выполняет по одному оператору (возможно составному) за раз. Начальное окружение идентично окружению полной программы; каждый оператор выполняется в пространстве имён __main__.

В Unix полная программа может быть передана интерпретатору в трёх формах: с опцией командной строки -c string, как файл, переданный в качестве первого аргумента командной строки, или через стандартный ввод. Если файл или стандартный ввод являются tty-устройством, интерпретатор переходит в интерактивный режим; в противном случае он выполняет файл как полную программу.

Ввод из файлаFile input

Весь ввод, читаемый из неинтерактивных файлов, имеет одну и ту же форму:

file_input ::=  (NEWLINE | statement)*

Этот синтаксис используется в следующих ситуациях:

  • при разборе полной программы на Python (из файла или из строки);
  • при разборе модуля;
  • при разборе строки, переданной функции exec();

Интерактивный вводInteractive input

Ввод в интерактивном режиме разбирается с использованием следующей грамматики:

interactive_input ::=  [stmt_list] NEWLINE | compound_stmt NEWLINE

Обратите внимание, что в интерактивном режиме за (составным) оператором верхнего уровня должна следовать пустая строка; это необходимо, чтобы помочь синтаксическому анализатору обнаружить конец ввода.

Ввод выраженийExpression input

Существуют две формы ввода выражений. Обе игнорируют начальные пробелы. Строковый аргумент eval() должен иметь следующую форму:

eval_input ::=  expression_list NEWLINE*

Примечание: чтобы прочитать «сырую» входную строку без интерпретации, можно использовать метод readline() файловых объектов, включая sys.stdin.