Основные компоненты
Интерпретатор 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–2024 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.12/reference/toplevel_components.html