Spec-Zone.ru › Python 3.12

Введение

Данное справочное руководство описывает язык программирования Python. Оно не предназначено в качестве учебника.

Хотя я стараюсь быть максимально точным, я выбрал использовать английский язык вместо формальных спецификаций для всего, кроме синтаксиса и лексического анализа. Это должно сделать документ более понятным для среднего читателя, но оставит место для неоднозначностей. Следовательно, если бы вы прибыли с Марса и попытались переиспользовать Python только по этому документу, вам пришлось бы догадываться, и на самом деле вы, вероятно, в итоге реализовали бы совершенно другой язык. С другой стороны, если вы используете Python и хотите узнать точные правила в отношении определенной области языка, вы определенно сможете их здесь найти. Если вы хотите увидеть более формальное определение языка, возможно, вы могли бы посвятить своё время — или изобрести машину для клонирования :-).

Опасно добавлять слишком много деталей реализации в документ по справочнику языка — реализация может измениться, и другие реализации того же языка могут работать по-разному. С другой стороны, CPython является наиболее распространённой реализацией Python (хотя альтернативные реализации продолжают получать поддержку), и его особенности иногда стоит упомянуть, особенно там, где реализация накладывает дополнительные ограничения. Поэтому вы найдете краткие «примечания по реализации», разбросанные по всему тексту.

Каждая реализация Python поставляется с рядом встроенных и стандартных модулей. Они документированы в Стандартной библиотеке Python. Несколько встроенных модулей упоминаются, когда они значимым образом взаимодействуют с определением языка.

1.1. Альтернативные реализации

Хотя есть одна реализация Python, которая является безусловно наиболее популярной, существуют некоторые альтернативные реализации, которые представляют особый интерес для разных аудиторий.

Известные реализации включают:

CPython

Это оригинальная и наиболее поддерживаемая реализация Python, написанная на языке C. Новые возможности языка, как правило, появляются здесь первыми.

Jython

Python, реализованный на языке Java. Эта реализация может использоваться как скриптовый язык для приложений Java или может использоваться для создания приложений с использованием библиотек классов Java. Она также часто используется для создания тестов для библиотек Java. Дополнительную информацию можно найти на сайте Jython: https://www.jython.org/.

Python для .NET

Эта реализация фактически использует реализацию CPython, но является управляемым приложением .NET и предоставляет доступ к библиотекам .NET. Она была создана Брайаном Ллойдом. Для получения дополнительной информации см. домашнюю страницу Python для .NET: https://pythonnet.github.io/.

IronPython

Альтернативная реализация Python для .NET. В отличие от Python.NET, это полная реализация Python, которая генерирует IL и компилирует код Python непосредственно в сборки .NET. Она была создана Джимом Хьюгинином, первоначальным создателем Jython. Дополнительную информацию можно найти на сайте IronPython: https://ironpython.net/.

PyPy

Реализация Python, написанная полностью на языке Python. Она поддерживает несколько расширенных функций, отсутствующих в других реализациях, таких как поддержка stackless и компилятор Just in Time. Одна из целей проекта — поощрять эксперименты с языком, делая его более простым для изменения интерпретатора (поскольку он написан на Python). Дополнительную информацию можно найти на домашней странице проекта PyPy: https://www.pypy.org/.

Каждая из этих реализаций по-своему отличается от языка, описанного в данном руководстве, или предоставляет специфическую информацию, которая выходит за рамки стандартной документации Python. Обращайтесь к документации конкретной реализации, чтобы определить, что еще вам нужно знать о конкретной используемой вами реализации.

1.2. Нотация

Описание лексического анализа и синтаксиса использует модифицированную нотацию грамматики Backus–Naur form (BNF). Она использует следующий стиль определения:

name      ::=  lc_letter (lc_letter | "_")*
lc_letter ::=  "a"..."z"

Первая строка указывает, что name представляет собой lc_letter, за которым следует последовательность нуля или более lc_letter и знаков подчеркивания. lc_letter в свою очередь — это любой из одиночных символов от 'a' до 'z'. (Это правило действительно соблюдается для имён, определённых в лексических и грамматических правилах в данном документе.)

Каждое правило начинается с имени (которое является именем, определённым правилом) и ::=. Вертикальная черта (|) используется для разделения альтернатив; это оператор с наименьшей связью в этой нотации. Звезда (*) означает ноль или более повторений предыдущего элемента; аналогично, плюс (+) означает одно или более повторений, а фраза в квадратных скобках ([ ]) означает ноль или одно вхождение (другими словами, заключенная фраза является необязательной). Операторы * и + связывают как можно сильнее; для группировки используются скобки. Буквенные строки заключаются в кавычки. Пробелы имеют смысл только для разделения токенов. Правила, как правило, содержатся на одной строке; правила с множеством альтернатив могут быть отформатированы по-другому, при этом каждая строка после первой начинается с вертикальной черты.

В лексических определениях (как в примере выше) используются ещё две конвенции: два буквенных символа, разделенных тремя точками, означают выбор любого одиночного символа в заданном (включительно) диапазоне ASCII-символов. Фраза в угловых скобках (<...>) даёт неформальное описание символа, определённого; например, это можно использовать для описания понятия «управляющий символ», если это необходимо.

Хотя используемая нотация почти одинакова, есть существенная разница в значении лексических и синтаксических определений: лексическое определение оперирует отдельными символами входного исходника, а синтаксическое определение оперирует потоком токенов, сгенерированным лексическим анализом. Все использования BNF в следующей главе («Лексический анализ») — это лексические определения; использования в последующих главах — синтаксические определения.

© 2001–2024 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.12/reference/introduction.html

Spec-Zone.ru

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