Компоненты верхнего уровня
Интерпретатор Python может получать входные данные из различных источников: из скрипта, переданного ему через стандартный ввод или в качестве аргумента программы, из интерактивно введённого текста, из исходного файла модуля и т. д. В этой главе описан синтаксис, используемый в этих случаях.
9.1. Полные программы Python
Хотя спецификация языка не обязана определять способ вызова интерпретатора языка, полезно иметь понятие полной программы Python. Полная программа Python выполняется в минимально инициализированной среде: доступны все встроенные модули и модули стандартной библиотеки, но ни один из них не инициализирован, за исключением sys (различные системные службы), builtins (встроенные функции, исключения и None) и __main__. Последний используется для предоставления локального и глобального пространств имён при выполнении полной программы.
Для полной программы Python используется синтаксис для ввода из файла, описанный в следующем разделе.
Интерпретатор также можно вызвать в интерактивном режиме; в этом случае он не считывает и выполняет полную программу, а считывает и выполняет по одному оператору (возможно, составному) за раз. Начальная среда идентична среде полной программы; каждый оператор выполняется в пространстве имён __main__.
Полную программу можно передать интерпретатору в трёх формах: с помощью параметра командной строки -c string, в виде файла, переданного первым аргументом командной строки, или через стандартный ввод. Если файл или стандартный ввод связаны с устройством 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–2025 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.13/reference/toplevel_components.html