Spec-Zone.ru › Python 3.11

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

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

Spec-Zone.ru

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