Spec-Zone.ru › Python 3.14

Компоненты верхнего уровня

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

9.1. Полные программы Python

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

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

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

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

9.2. Файловый ввод

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

file_input: (NEWLINE | statement)* ENDMARKER

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

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

9.3. Интерактивный ввод

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

interactive_input: [stmt_list] NEWLINE | compound_stmt NEWLINE | ENDMARKER

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

9.4. Ввод выражений

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

eval_input: expression_list NEWLINE* ENDMARKER

© 2001 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.14/reference/toplevel_components.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API