Основные компоненты
Интерпретатор Python может получать входные данные из различных источников: из скрипта, переданного ему как стандартный ввод или аргумент программы, введенного интерактивно, из исходного файла модуля и т. д. В этой главе приводится синтаксис, используемый в этих случаях.
9.1. Полные программы Python
Хотя спецификация языка не должна предписывать, как вызывается интерпретатор языка, полезно иметь представление о полной программе Python. Полная программа Python выполняется в минимально инициализированной среде: все встроенные и стандартные модули доступны, но ни один из них не был инициализирован, за исключением sys (различные системные службы), builtins (встроенные функции, исключения и None) и __main__. Последний используется для предоставления локального и глобального пространства имен для выполнения полной программы.
Синтаксис полной программы Python аналогичен синтаксису для входных данных из файла, описанного в следующем разделе.
Интерпретатор также может быть вызван в интерактивном режиме; в этом случае он не считывает и не выполняет полную программу, а считывает и выполняет по одной инструкции (возможно, составной) за раз. Начальная среда идентична среде полной программы; каждая инструкция выполняется в пространстве имен __main__.
Полную программу можно передать интерпретатору в трех форматах: с помощью опции командной строки -c строка, в качестве файла, переданного в качестве первого аргумента командной строки, или как стандартный ввод. Если файл или стандартный ввод — это устройство tty, интерпретатор переходит в интерактивный режим; в противном случае он выполняет файл как полную программу.
9.2. Ввод из файла
Все входные данные, считанные из файлов, не являющихся интерактивными, имеют одинаковый вид:
file_input ::= (NEWLINE | statement)*
Этот синтаксис используется в следующих ситуациях:
- при разборе полной программы Python (из файла или строки);
- при разборе модуля;
- при разборе строки, переданной функции
exec();
9.3. Интерактивный ввод
Ввод в интерактивном режиме анализируется с помощью следующей грамматики:
interactive_input ::= [stmt_list] NEWLINE | compound_stmt NEWLINE
Обратите внимание, что составная инструкция (верхнего уровня) должна быть после нее пустая строка в интерактивном режиме; это необходимо, чтобы помочь анализатору определить конец ввода.
9.4. Ввод выражений
eval() используется для ввода выражений. Пробелы в начале игнорируются. Строковый аргумент для eval() должен иметь следующий вид:
eval_input ::= expression_list NEWLINE*
© 2001–2022 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.8/reference/toplevel_components.html