Spec-Zone.ru › Python 3.12

Основные компоненты

Интерпретатор 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

Spec-Zone.ru

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