Перейти к содержанию

Python/Справочник по языку Python 2.6

Материал из Викиучебника — открытых книг для открытого мира
Документация Python
Эта статья — часть Документации по языку Python
Исходный текст http://docs.python.org/reference/index.html
Релиз 2.6
Версия от 07 августа 2009

Данное справочное руководство описывает синтаксис и "семантическое ядро" языка. Это сжатое, но, по возможности, точное и полное описание. Семантика встроенных типов объектов, не являющихся основными, а, также, стандартных функций и модулей описана в Справочнике по библиотеке. Неформальное введение в язык изложено в Учебнике. Для C и C++ программистов существует ещё 2 руководства: "Расширение и встройка", описывающее в целом, как писать модули расширений для Python, и "Python/C API", детально раскрывающие доступные интерфейсы для C/C++ программистов.

Введение

[править]

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

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

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

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

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

[править]

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

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

CPython

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

Jython

Реализация Python на Java. Эта реализация может быть использована как скриптовый язык для Java-приложений или для создания приложений на основе библиотек классов Java. Так же эта реализация используется для создания тестов для Java библиотек. За более подробной информация обращайтесь к веб-сайту Jython(англ.).

Python for .NET

Данная реализация восновном использует CPython, но управляет .NET-приложениями и делает доступными .NET-библиотеки. Создатель этой реализации Браен Ллойд (Brian Lloyd). За более подробной информация обращайтесь к домашней странице Python for .NET(англ.).

IronPython

Ещё один Python для .NET. В отличие от Python.NET, это полноценная реализация Python, которая генерирует байт-код и компилирует код Python непосредственно в .NET assemblies. Создатель этой реализации - Джим Хаганин (Jim Hugunin), также является автором Jython. За более подробной информацией обращайтесь к домашней странице IronPython(англ.).

PyPy

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

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

Обозначения

[править]

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


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


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

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

Лексический анализ

[править]

Линейная структура

[править]

Другие лексемы

[править]

Идентификаторы и ключевые слова

[править]

and elif if print as else import raise assert except in return break exec is try class finally lambda while continue for not with def from or yield del global pass

Литералы

[править]

Операторы

[править]

Разделители

[править]

Модель данных

[править]

Объекты, значения и типы

[править]

Иерархия встроенных типов

[править]

Классические классы и классы в новом стиле

[править]

Имена специальных типов

[править]

Модель исполнения

[править]

Именование и связывание

[править]

Исключения

[править]

Выражения

[править]

Арифметические преобразования

[править]

Атомы

[править]

Primaries

[править]

=\

Power operator

[править]

Унарные арифметические и побитовые операции

[править]

Операции сдвига

[править]

Бинарные побитовые операции

[править]