Документация Python неофициальный перевод

introduction.md

62 строк · 10.9 КБ · обычная страница · сырой текст · скачать

1> **Источник:** https://python-all.ru/3.10/reference/introduction.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# 1. Введение89Этот справочник описывает язык программирования Python. Он не является учебным пособием.1011Хотя я стараюсь быть максимально точным, я решил использовать английский, а не формальные спецификации для всего, кроме синтаксиса и лексического анализа. Это должно сделать документ более понятным для среднего читателя, но оставляет место для неоднозначностей. Следовательно, если бы вы прилетели с Марса и попытались заново реализовать Python, основываясь только на этом документе, вам пришлось бы многое додумывать, и, скорее всего, в итоге получился бы совсем другой язык. С другой стороны, если вы используете Python и хотите узнать точные правила в какой-то конкретной области языка, вы определенно сможете найти их здесь. Если вам хотелось бы увидеть более формальное определение языка, возможно, вы могли бы пожертвовать своим временем – или изобрести машину для клонирования :-).1213Добавлять слишком много деталей реализации в справочный документ по языку опасно – реализация может измениться, а другие реализации того же языка могут работать иначе. С другой стороны, CPython – это единственная широко используемая реализация Python (хотя альтернативные реализации продолжают получать поддержку), и его особые причуды иногда стоит упомянуть, особенно там, где реализация накладывает дополнительные ограничения. Поэтому по всему тексту вы найдете короткие «заметки о реализации».1415Каждая реализация Python поставляется с набором встроенных и стандартных модулей. Они описаны в [Стандартной библиотеке Python](https://python-all.ru/3.10/library/index.html#library-index). Некоторые встроенные модули упоминаются, когда они существенно взаимодействуют с определением языка.1617## 1.1. Альтернативные реализации1819Хотя существует одна реализация Python, которая является безусловно самой популярной, есть и некоторые альтернативные реализации, представляющие особый интерес для разных аудиторий.2021Известные реализации включают:2223**CPython**2425Это оригинальная и наиболее поддерживаемая реализация Python, написанная на C. Новые возможности языка обычно появляются сначала здесь.2627**Jython**2829Python, реализованный на Java. Эта реализация может использоваться как скриптовый язык для Java-приложений или для создания приложений с использованием библиотек классов Java. Она также часто используется для создания тестов для Java-библиотек. Дополнительную информацию можно найти на [сайте Jython](https://python-all.ru/3.10/reference/introduction.html).3031**Python for .NET**3233Эта реализация на самом деле использует CPython, но является управляемым .NET-приложением и предоставляет доступ к библиотекам .NET. Она была создана Brian Lloyd. Для получения дополнительной информации см. [домашнюю страницу Python for .NET](https://python-all.ru/3.10/reference/introduction.html).3435**IronPython**3637Альтернативный Python для .NET. В отличие от Python.NET, это полноценная реализация Python, которая генерирует IL и компилирует код Python непосредственно в сборки .NET. Она была создана Jim Hugunin, оригинальным создателем Jython. Для получения дополнительной информации см. [сайт IronPython](https://python-all.ru/3.10/reference/introduction.html).3839**PyPy**4041Реализация Python, полностью написанная на Python. Она поддерживает несколько расширенных возможностей, отсутствующих в других реализациях, таких как поддержка stackless и JIT-компилятор. Одна из целей проекта – стимулировать эксперименты с самим языком, упрощая модификацию интерпретатора (поскольку он написан на Python). Дополнительная информация доступна на [домашней странице проекта PyPy](https://python-all.ru/3.10/reference/introduction.html).4243Каждая из этих реализаций в той или иной степени отличается от языка, описанного в данном руководстве, или содержит дополнительную информацию, выходящую за рамки стандартной документации Python. Обратитесь к документации конкретной реализации, чтобы узнать все необходимое о той реализации, которую вы используете.4445## 1.2. Нотация4647Описания лексического анализа и синтаксиса используют модифицированную нотацию грамматики BNF. В ней используется следующий стиль определения:4849```5051name      ::=  lc_letter (lc_letter | "_")*52lc_letter ::=  "a"..."z"53```5455Первая строка гласит, что `name` – это `lc_letter`, за которым следует последовательность из нуля или более `lc_letter` и знаков подчёркивания. `lc_letter`, в свою очередь, – это любой из одиночных символов от `'a'` до `'z'`. (Это правило фактически соблюдается для имён, определённых в лексических и грамматических правилах данного документа.)5657Каждое правило начинается с имени (которое и определяется этим правилом) и `::=`. Вертикальная черта (`|`) используется для разделения альтернатив; это операция с наименьшим связыванием в данной нотации. Звёздочка (`*`) означает ноль или более повторений предыдущего элемента; аналогично, плюс (`+`) – одно или более повторений, а фраза, заключённая в квадратные скобки (`[ ]`), – ноль или одно вхождение (то есть эта фраза необязательна). Операторы `*` и `+` связывают максимально плотно; для группировки используются круглые скобки. Строковые литералы заключаются в кавычки. Пробельные символы значимы только для разделения токенов. Обычно правила помещаются в одну строку; правила со многими альтернативами могут быть оформлены иначе, когда каждая строка после первой начинается с вертикальной черты.5859В лексических определениях (как в примере выше) используются ещё два соглашения: два литеральных символа, разделённых тремя точками, означают выбор любого одиночного символа из заданного (включительно) диапазона символов ASCII. Фраза в угловых скобках (`<...>`) даёт неформальное описание определяемого символа; например, её можно использовать для описания понятия «управляющий символ», если потребуется.6061Хотя используемая нотация почти одинакова, между смыслом лексических и синтаксических определений есть большое различие: лексическое определение оперирует отдельными символами исходного кода, тогда как синтаксическое определение оперирует потоком токенов, порождённых лексическим анализом. Все применения БНФ в следующей главе («Лексический анализ») являются лексическими определениями, а в последующих главах – синтаксическими.62