Spec-Zone.ru › Python 3.9

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

Интерпретатор 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–2022 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.9/reference/toplevel_components.html

Spec-Zone.ru

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