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