Готовый перевод The Python Language Reference / Справочник по языку Python: 1. Introduction

Внимание! Этот перевод, возможно, ещё не готов, так как модераторы установили для него статус «перевод редактируется»

<font style="text-align: right; font-weight: bold;">Введение</font>

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

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

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

Каждая реализация Python поставляется со встоенными стандартыми модулями. Они задокументированы в руководстве The Python Standard Library. Встроенные модули упоминаются в том случае, когда они оказывают существенное влияние на определение языка.

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

Среди прочих наиболее известны следующие реализации:

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

Jython
Python, написанный на Java. Эта реализация может быть использована, как скриптовый язык для Java приложений, или же для создания приложений с применением библиотек классов Java. Jython также часто применяется для написания тестов для библиотек Java. Более подробную информацию можно найти на сайте Jython.

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

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

PyPy
Реализация Python, написанная на Python. В качестве исполняющей среды используется CPython, как базовый интерпретатор. Одна из целей проекта - поддержать эксперимент над языком, создав более простой для модификации интерпретатор ( поскольку он также написан на Python). Дополнительная информация доступна на домашней странице проекта PyPy.

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

1.2 Нотация
Описание лексического анализа и синтаксиса использует модицифированный вариант грамматической нотации BNF. Используются следующие виды определений:

<code>&nbsp;&nbsp;&nbsp;&nbsp;name ::= lc_letter (lc_letter | "_")*
&nbsp;&nbsp;&nbsp;&nbsp;lc_letter ::= "a"..."z"</code>

В первой строке сказано, что Name (имя) - это lc_letter за которой следует ноль или более lc_letter и значок подчеркивания. lc_letter - это в свою очередь одиночный символ между 'a' и 'z'. ( Это правило фактически относится к именам, определенным по лексическим и граматическим правилам в этом документе).

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

В лексических определениях (таких как в примере выше), мспользуются еще 2 соглашения. Два буквенных символа, разделеные тремя точками обозначают любой символ из заданного интервала ASCII символов. Фраза в треугольных скобках дает неформальное описание определяемого символа, например она может использоваться для описания значения 'управляющих символов', если это необходимо.

Несмотря на то, что используемая нотация в основном одинакова, следует различать значение лексических и синтаксических определений: лексические определения оперируют отдельными символами в качестве входного источника , в то время как синтаксические определения оперируют с потоками токенов, созданными лексическим анализом. Все использования BNF в следующей главе - лексические определения, в последующих главах - синтаксический определения.

Внимание! Этот перевод, возможно, ещё не готов.
Его статус: перевод редактируется

Переведено на Нотабеноиде
http://notabenoid.org/book/5672/17124

Переводчики: Viktorianka, RedFox, Droidos, starius

alvadia3

Настройки

Готово:

100.00% КП = 1.1