Справочное руководство по python

Базовые сведения о языке Python.

Основные характеристики языка Python (плюсы и минусы), реализации, дзен.

Установка Python3.

Рассматривается установка интерпретатора языка программирования Python v.3 на ОС Windows и Unix подобные системы, такие как Ubuntu, Debian

Способы запуска скриптов Python.

При запуске, интерпретатор CPython сканирует командную строку и переменную среду для настройки параметров выполнения скрипта. Схемы командной строки и ее параметров других реализаций могут отличаться.

Инструменты для разработки на Python

PIP пакетный менеджер, virtualenv виртуальное окружение, IDE интегрированная среда разработки

Руководство по стилю кода PEP 8 в Python.

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

Структура программы и модель исполнения кода в Python.

Структура программы, связывание имен переменных, разрешение имен, взаимодействие с динамическими функциями, Исключения

Присваивание значений в Python

В Python операции присваивания бывают трех видов: простое присваивание, составное присваивания и выражения присваивания.

Операции над числами в Python

Python поддерживает все обычные операции, выполняемые над числами. Числа — неизменяемые объекты. Выполняя операции над числовыми объектами, вы всегда получаете новые числовые объекты, а не изменяете существующие.

Операторы/операции сравнения (цепочки сравнений) в Python.

В Python есть восемь операций сравнения. Все они имеют одинаковый приоритет, который выше, чем у логических операций. Сравнения могут быть связаны в цепочки: x < y <= z, эквивалентно x < y and y <= z.

Логические операции and, or и not в Python.

and, or и not — это логические операции Python, которые имеют приоритет выполнения. Операции and и or имеют более высокий приоритет чем not

Оператор идентичности is в Python.

Операторы is и not is проверяют идентичность объекта: x is y будет истинно тогда и только тогда, когда x и y являются одним и тем же объектом.

Оператор in вхождения/членства элемента в Python.

Операторы in и not in проверяют наличие элемента в последовательности. Выражение x in s принимает значение True, если x является членом s, и False в противном случае.

Проверка истинности в Python

Любой объект может быть проверен на значение истинности, для использования в if…else или while конструкциях или в качестве операнда булевых операций.

  • Документация

    Django — документация на русском

    Django (Джанго) — свободный фреймворк для веб-приложений на языке Python, использующий шаблон проектирования MVC. Документация на русском языке.

    Python — документация на русском

    Python — это простой в освоении мощный язык программирования.

    Django Rest Framework

    Django Rest Framework (DRF) — это библиотека, которая работает со стандартными моделями Django для создания гибкого и мощного API для проекта.

    Рецепты Django ORM

    Рецепты Django ORM — это книга о работе с моделями Django ORM и Django. Django ORM является одним из ключевых столпов Django.

    SQLAlchemy на русском

    SQLAlchemy — это набор инструментов Python SQL и Object Relational Mapper, который дает разработчикам приложений всю мощь и гибкость SQL.

    Django CMS

    Django CMS — это современная платформа для веб-публикаций, построенная на Django, фреймворке веб-приложений «для перфекционистов с соблюдением сроков».

    Документация по Python Social Auth

    Python Social Auth — это простой в настройке механизм социальной аутентификации/регистрации с поддержкой нескольких платформ и провайдеров аутентификации.

    Celery

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

    Перейти к полному списку библиотек →

  • Статьи

    Статьи

    Учебники по фреймворку Django, его особенностям, случаям использования и общим полезным вещам о фреймворке.

    Советы

    Различные маленькие подсказки, советы, необычные применения Django — маленькие полезные вещи.

    Видеоуроки

    Видеоуроки по фреймворку Django, основам и использованию Python и Django.

    Новости

    Новости Django. Будьте в курсе последних изменений и событий.

    Python

    Учебники по Python, его функциям, применению и общим полезным вещам.

  • Вопросы и ответы

  • Классы-представления

  • Python, Справочник, Полное описание языка, Мартелли А., Рейвенскрофт А., Холден С., 2019.

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

    Python, Справочник, Полное описание языка, Мартелли А., Рейвенскрофт А., Холден С., 2019

    Введение в Python.
    Универсальный язык программирования Python известен уже давно: его создатель, Гвидо ван Россум, приступил к разработке Python в 1990 году. Этот стабильный и зрелый язык обладает целым рядом привлекательных качеств: он сверхвысокоуровневый, динамичный, объектно-ориентированный и кросс-платформенный. Python выполняется на всех основных аппаратных платформах под управлением самых разных операционных систем, предоставляя полную свободу в отношении их выбора.

    Python обеспечивает высокую производительность на всех фазах жизненного цикла разработки программного обеспечения (ПО): фазах анализа, проектирования, прототипирования, написания, тестирования, отладки и доводки программного кода, а также подготовки документации, развертывания и, разумеется, сопровождения готового приложения. Год от года популярность Python неуклонно возрастает. В наши дни знание языка Python служит дополнительным плюсом к характеристике любого программиста, поскольку Python проник практически во все возможные ниши и может играть важную роль в качестве компонента любого программного решения.

    ОГЛАВЛЕНИЕ.
    Предисловие.
    Часть I. Начало работы с Python.
    Глава 1. Введение в Python.
    Глава 2. Интерпретатор Python.
    Часть II. Ядро и встроенные объекты Python.
    Глава 3. Язык программирования Python.
    Глава 4. Объектно-ориентированный Python.
    Глава 5. Исключения.
    Глава 6. Модули.
    Глава 7. Встроенные объекты и модули стандартной библиотеки.
    Глава 8. Строки и байты.
    Глава 9. Регулярные выражения.
    Часть III. Библиотека Python и модули расширения.
    Глава 10. Работа с файлами и текстом.
    Глава 11. Базы данных и постоянное хранение.
    Глава 12. Работа со значениями даты и времени.
    Глава 13. Управление процессом выполнения.
    Глава 14. Потоки и процессы.
    Глава 15. Математические вычисления.
    Глава 16. Тестирование, отладка и оптимизация кода.
    Часть IV. Сетевое и веб-программирование.
    Глава 17. Основы работы с сетями.
    Глава 18. Асинхронные архитектуры.
    Глава 19. Модули для работы с клиентскими сетевыми протоколами.
    Глава 20. Работа с протоколом HTTP.
    Глава 21. Электронная почта, MIME и другие сетевые кодировки.
    Глава 22. Структурированный текст: HTML.
    Глава 23. Структурированный текст: XML.
    Часть V. Расширение, распространение, миграция v2/v3.
    Глава 24. Модули расширения и внедрение классического Python в другие программы.
    Глава 25. Распространение расширений и программ.
    Глава 26. Переход с версии 2.x на версию 3.x и сосуществование различных версий.
    Предметный указатель.

    Бесплатно скачать электронную книгу в удобном формате, смотреть и читать:

    Скачать книгу Python, Справочник, Полное описание языка, Мартелли А., Рейвенскрофт А., Холден С., 2019 — fileskachat.com, быстрое и бесплатное скачивание.

    Скачать файл № 1 — pdf
    Скачать файл № 2 — djvu
    Ниже можно купить эту книгу по лучшей цене со скидкой с доставкой по всей России.Купить эту книгу

    Скачать
    — djvu — Яндекс.Диск.

    Скачать
    — pdf — Яндекс.Диск.

    Дата публикации: 17.02.2020 09:58 UTC

    Теги:

    справочник по программированию :: программирование :: Мартелли :: Рейвенскрофт :: Холден


    Следующие учебники и книги:

    • Справочник системного администратора по программированию Windows, Коробко И.В., 2009
    • Информационные технологии, краткий терминологический словарь специальных терминов, Соколов И.А., Быстров И.И., 2017
    • Краткий справочник-словарь русского компьютерhого диалекта
    • Анализ и синтез систем автоматического управления на ЭВМ, Алгоритмы и программы, Справочник, Болнокин В.Е., Чинаев П.И., 1991

    Предыдущие статьи:

    • XSLT, справочник программиста, Кэй М., 2002
    • Толковый словарь по информатике, Пивняк Г.Г., Бусыгин Б.С., Дивизинюк М.М., 2008
    • Информатика в статистике, словарь-справочник, 1994
    • Информатика, Словарь компьютерных терминов, Валединский В.Д., 1997

    Введение[править]

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

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

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

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

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

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

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

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

    • CPython

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

    • Jython

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

    • Python for .NET

    Данная реализация в действительности основана на CPython, но является управляемым .NET приложением и предоставляет доступ к библиотекам .NET. Она была создана Брайаном Ллойдом (Brian Lloyd). Более подробную информацию Вы можете найти на сайте Python for .NET.

    • IronPython

    Альтернативная реализация Python for .NET. В отличие от Python.NET, это целостная реализация Python, генерирующая IL, и компилирующая программы на Python непосредственно в сборки .NET. Она была создана Джимом Хугунин (Jim Hugunin), создателем Jython. Более подробную информацию Вы можете найти на сайте IronPython.

    • PyPy

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

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

    Нотация[править]

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

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

    В первой строке указано, что name — это lc_letter за которым идет последовательность из нуля или более lc_letter и знаков подчеркивания. lc_letter в свою очередь — это любой символ от ‘a’ до ‘z’. (Это правило соблюдается «де-факто» в лексических и грамматических правилах настоящего документа.)

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

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

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

    Лексический анализ[править]

    Программа на Python читается парсером. Входным потоком для парсера является поток токенов, генерируемый лексическим анализатором. В данной главе описывается, как лексический анализатор разделяет файл на токены.

    Python считывает текст программы как символы в формате Unicode; кодировка символов может быть задана декларацией кодировки, по умолчанию она считается UTF-8, более подробно см. PEP 3120. Если файл с исходным кодом не может быть декодирован, генерируется ошибка синтаксиса.

    Структура строки[править]

    Программа на Python состоит из логических строк.

    Логические строки[править]

    Конец логической строки определяется токеном NEWLINE. Декларации не могут выходить за рамки границ логической строки, кроме тех случаев, когда NEWLINE допустима в синтаксисе (напр., между отдельными декларациями в составных декларациях). Логическая строка составляется из одной или большего количества физических строк с учетом явных или неявных правил объединения физических строк.

    Физические строки[править]

    Физические строки — это последовательности символов, оканчивающиеся последовательностью конца строки. В исходных файлах могут использоваться стандартные для разных вычислительных платформ последовательности конца строки — в Unix ASCII символ перевода строки LF (linefeed), в Windows — последовательность ASCII символов CR LF (возврат каретки, за которым стоит символ перевода строки), или использовавшийся ранее на Macintosh символ перевода каретки CR (return). Любой из этих вариантов может использоваться равноправно, вне зависимости от текущей вычислительной платформы.

    При отдельном использовании Python, строки исходного кода должны передаваться в Python API с использованием стандартных соглашений языка C для символов перевода строки (символ n, представляющий ASCII LF, является признаком конца строки).

    Комментарии[править]

    Комментарий начинается с символа «решетка» (#), который не является частью строки, и заканчивается концом физической строки. Комментарий является также концом строки, кроме
    случаев неявного использования правила объединения строк. Комментарии игнорируются синтаксическим анализатором и не являются токенами.

    Задание кодировки[править]

    Если комментарий в первой или второй строке скрипта Python соответствует регулярному выражению coding[=:]s*([-w.]+), то этот комментарий обрабатываться как объявление кодировки; первая группа этого выражения задает кодировку исходного текста. Рекомендуемые формы этого выражения:

    # -*- coding: <encoding-name> -*-
    

    которая также распознается GNU Emacs, и

    # vim:fileencoding=<encoding-name>
    

    которая распознается Bram Moolenaar’s VIM.

    Если объявление кодировки не было найдено, то по умолчанию используется кодировка UTF-8. Кроме того, если первые байты файла являются UTF-8 byte-order mark (b’xefxbbxbf’), то для файла выбирается кодировка UTF-8 (это поддерживается, среди прочего, блокнотом от Microsoft).

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

    2.1.5. Явное объединение строк[править]

    Две или более физических строк могут быть объединены в одну условную строку при помощи символа бэкслэш () следующим образом: когда строка заканчивается бэкслэшем, не являющимся частью текстовых данных или комментария, она объединяется со следующей, составляя единую условную строку, не включающую бэкслэш и следующий за ним символ окончания строки. Например:

    if 1900 < year < 2100 and 1 <= month <= 12 
        and 1 <= day <= 31 and 0 <= hour < 24 
        and 0 <= minute < 60 and 0 <= second < 60:   # Похоже ли на дату
             return 1
    

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

    2.1.6. Неявное объединение строк[править]

    Выражения в скобках — круглых, квадратных либо фигурных — могут быть разделены на несколько физических строк без использования бэкслэша. Например:

    month_names = ['Januari', 'Februari', 'Maart',      # Это
                    'April',   'Mei',      'Juni',       # голландские
                    'Juli',    'Augustus', 'September',  # названия
                    'Oktober', 'November', 'December']   # месяцев
    

    Неявно продолженные строки могут содержать комментарии. Отступы не играют роли в продолженных строках. При продолжении разрешены пустые строки. Лексемы NEWLINE не должно быть в неявно продолженных строках. Строки в тройных кавычках (см. ниже) также могут быть неявно продолженными, в этом случае они не могут содержать комментарий.

    2.1.7. Пустые строки[править]

    Условные строки, содержащие только пробелы, знаки табуляции или перевода страницы и комментарии игнорируется (т.е. не создается лексемы NEWLINE). Во время интерактивного ввода операторов обработка пустой последовательности может отличаться в зависимости от реализации цикла чтение-вычисление-вывод. В стандартном интерактивном интерпретаторе полностью пустая условная строка (т.е. не содержащая даже пробел или комментарий) завершает многострочный оператор.

    2.1.8. Отступы[править]

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

    Знаки табуляции заменяются (слева напрво) по одному на восемь пробелов так, что общее число символов после замены кратно восьми (здесь использовано то же правило, что и в Unix). Общее число знаков перед первым непустым символом определяет отступ строки. Отступ не может быть разделен между многими физическими строками с помощью бэкслэша; знаки пробела и табуляции до первого бэкслэша определяют отступ.

    Отступы не принимаются из-за противоречивости, если исходный файл смешивает табуляции и пробелы таким образом, что делает смысл зависящим от размера табуляции в пробелах; в таком случае генерируется «TabError» .

    Замечание о кроссплатформенной совместимости: из-за особенностей текстовых редакторов на не-UNIX платформах — не следует использовать смесь пробелов и табуляций для отступов в одном исходном файле. Также следует отметить, что различные платформы могут явно ограничивать максимальный уровень отступов.

    Символ перевода страницы (formfeed) может находится в начале строки, тогда он игнорируется при расчете отступов. В любом другом месте символ перевода страницы между пробелами в начале строки может обрабатываться неопределенным образом (например, может сбрасывать счетчик предыдущих пробелов до нуля).

    Уровни отступа строк используются для создания лексем INDENT (отступ) и DEDENT (конец отступа) при помощи стека, как описано ниже.

    Перед чтением первой строки файла в стек записывается значение «0», это значение никогда не будет извлечено. Числа, заносимые в стек, будут строго возрастать. В начале каждой условной строки уровень отступа сравнивается с максимальным значением на верху стека; если они равны, то ничего не происходит. Если уровень отступа больше, то он заносится в стек, и создается одна лексема «INDENT». Если уровень меньше, то это число уже должно быть в стеке; все числа, которые больше, удаляются, и для каждого удаленного числа создается лексема «DEDENT» . В конце файла лексемы «DEDENT» создаются для всех оставшихся в стеке чисел больше нуля.

    Здесь приведен пример кода на Питоне с правильно (но странновато) расставленными отступами:

    def perm(l):
             # Расчет списка всех перестановок l
         if len(l) <= 1:
                       return [l]
         r = []
         for i in range(len(l)):
                  s = l[:i] + l[i+1:]
                  p = perm(s)
                  for x in p:
                   r.append(l[i:i+1] + x)
         return r
    

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

    def perm(l):                       # error: first line indented
     for i in range(len(l)):             # error: not indented
         s = l[:i] + l[i+1:]
             p = perm(l[:i] + l[i+1:])   # error: unexpected indent
             for x in p:
                     r.append(l[i:i+1] + x)
                 return r                # error: inconsistent dedent
    

    (Вообще-то, первые три ошибки найдены парсером, и только последняя — лексическим анализатором: уровень отступа return r не совпадает с уровнем в стеке.)

    2.1.9. Пробелы между лексемами[править]

    Кроме начала логической строки или в записи текстовых данных символы пробела, табуляции и перевода страницы могут быть взаимозаменяемы при разделении лексем. Эти символы необходимы между двумя лексемами только, если результат их объединения может быть интерпретирован как другая лексема (например : «ab» — это одна лексема, но «a b» — две лексемы) .

    2.2. Другие лексемы[править]

    Кроме «NEWLINE» , «INDENT» и «DEDENT» , существуют следующие категории лексем: идентификаторы, ключевые слова, литералы (непосредственная запись данных) , операторы и разделители. Символы пробелов (кроме знаков конца строки, описанных ранее) не являются лексемами, а служат для их разделения. Если появляется неопределенность, лексема включает самую длинную возможную последовательность, представляющую собой действительную лексему (чтение происходит слева направо) .

    2.3. Идентификаторы и ключевые слова[править]

    Идентификаторы (имена) имеют следующее лексическое определение.

    Синтаксис идентификаторов в Питоне основывается на приложении «UAX-31» к стандарту «Unicode» , с переработкой и изменениями описанными ниже. Также смотрите дополнительные детали в «PEP 3131» .

    В ASCII диапазоне (U+0001..U+007F) в идентификаторах допустимы только те же символы, что и в Питоне 2.x : буквы от «A» до «Z» в верхнем и нижнем регистре, подчеркивание «_» и, кроме первого символа идентификатора, – цифры от «0» до «9» .

    В Питоне 3.0 введены дополнительные символы, не входящие в ASCII диапазон (см. «PEP 3131») . Для этих символов использована классификация из версии базы символов Unicode (Unicode Character Database), включенная в модуль «unicodedata» .

    Идентификаторы не ограничены по длине и чувствительны к регистру.

    identifier  ::=  id_start id_continue*
     id_start    ::=  < все символы в общих категориях Lu, Ll, Lt, Lm, Lo, Nl, подчёркивание, и символы со свойством Other_ID_Start >
     id_continue ::=  < все символы в id_start, плюс символы в категориях Mn, Mc, Nd, Pc и другие символы со свойством Other_ID_Continue >
    

    Использованные выше обозначения категорий Юникода :

    • Lu — буквы в верхнем регистре
    • Ll — буквы в нижнем регистре
    • Lt — Заглавные буквы
    • Lm — модифицирующие символы
    • Lo — другие буквы
    • Nl — буквенные числа
    • Mn — непробельные знаки
    • Mc — пробельные составные знаки
    • Nd — десятичные цифры
    • Pc — пунктуационные знаки

    Все идентификаторы при лексическом разборе конвертируются в нормализованную форму NFC; и сравнение идентификаторов производится уже в форме NFC.

    Ненормативный HTML файл со списком всех символов Юникода 4.1 , доступных для использования в идентификаторах, представлен здесь: http://www.dcl.hpi.uni-potsdam.de/home/loewis/table-3131.html .

    2.3.1. Ключевые слова[править]

    Следующие идентификаторы являются зарезервированными или ключевыми словами языка и не могут быть использованы как обычные идентификаторы. Они должны быть написаны именно так, как здесь:

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

    2.3.2. Зарезервированные классы идентификаторов[править]

    Определенные классы идентификаторов (помимо ключевых слов) имеют особое значение. Эти классы определяются соответствующей комбинацией символов подчеркивания в начале и в конце.

    «_*»

    Не импортируются инструкцией «from module import *» . Специальный идентификатор «_» используется интерактивным интерпретатором для хранения результата последнего вычисления, хранится он в модуле «builtins» . Не в интерактивном режиме «_» не имеет специального значения, не определен. (Смотрите раздел «Объявление импорта» ) .
    Примечание: Имя «_» часто используется в связи с интернационализацией, смотрите документацию модуля «gettext» для получения информации по этой договоренности.

    «__*__»

    Определенные системой имена. Эти имена определяются интерпретатором и его реализацией (включая стандартную библиотеку). Приложения не должны определять дополнительные имена используя эту форму. Набор имен этого класса, определенных в Питоне, может быть расширен в будущих версиях. Смотрите раздел «Имена специальных методов» .

    «__*»

    Частные имена класса. Имена этой категории, при использовании в рамках определения класса, автоматически модифицируются, чтобы избежать конфликтов имен между «частными» атрибутами базовых и производных классов. Смотрите в разделе «Идентификаторы (Имена)» .

    2.4. «Литералы»[править]

    «Литералы» — это непосредственная запись постоянных значений некоторых встроенных типов.

    2.4.1. Текстовые («String») и байтовые («Bytes») «литералы»[править]

    Непосредственная запись текстовых данных имеет следующее лексическое определение:

    stringliteral   ::=  [stringprefix](shortstring | longstring)
    stringprefix    ::=  "r" | "R"
    shortstring     ::=  "'" shortstringitem* "'" | '"' shortstringitem* '"'
    longstring      ::=  "'''" longstringitem* "'''" | '"""' longstringitem* '"""'
    shortstringitem ::=  shortstringchar | stringescapeseq
    longstringitem  ::=  longstringchar | stringescapeseq
    shortstringchar ::=  <любой символ программы, кроме "" или newline или закрывающей кавычки>
    longstringchar  ::=  <любой символ программы, кроме "">
    stringescapeseq ::=  "" <любой символ программы>
     
    bytesliteral   ::=  bytesprefix(shortbytes | longbytes)
    bytesprefix    ::=  "b" | "B" | "br" | "Br" | "bR" | "BR"
    shortbytes     ::=  "'" shortbytesitem* "'" | '"' shortbytesitem* '"'
    longbytes      ::=  "'''" longbytesitem* "'''" | '"""' longbytesitem* '"""'
    shortbytesitem ::=  shortbyteschar | bytesescapeseq
    longbytesitem  ::=  longbyteschar | bytesescapeseq
    shortbyteschar ::=  <любой символ ASCII, кроме "" или newline или закрывающей кавычки>
    longbyteschar  ::=  <любой символ ASCII, кроме "">
    bytesescapeseq ::=  "" <любой символ ASCII>
    

    Есть также одно синтаксическое ограничение, не отмеченное в этих определениях: знаки пробелов (пробела, табуляции, перевода страницы) не могут находится между строковым или байтовым префиксом и остальной частью «литерала» . Набор символов кода программы определяется объявлением кодировки, по умолчанию: UTF-8, смотрите раздел «Объявление кодировки» .

    Говоря проще : оба типа «литералов» обрамляются с двух сторон одинаковыми кавычками :
    или по одной одинарной «’» , или по одной двойной «»» , или по три одинарных «»’» , или по три двойных «»»»» (утроенные кавычки) . Символ бэкслэш «» используется для «экранирования» (вставки в качестве простых печатных) символов, которые в других случаях имеют особое значение, такие как знак новой строки, сам бэкслэш или кавычки.

    Строковые литералы могут опционально начинаться с букв «r» или «R» ; такие строки называются «сырыми» («raw»), и считают бэкслэш обычным символом. В результате последовательности «U» и «u» специального значения в «сырых» строках не имеют.

    Байтовым «литералам» должен предшествовать префикс «b» или «B» . Они создают экземпляр типа «bytes» вместо типа «str» . Этот тип может содержать только символы ASCII; байты с численным значением больше 127 записываются с помощью особых последовательностей символов.

    В текстовых данных в утроенных кавычках – могут присутствовать (и сохраняются как есть) «неэкранированные» знаки новой строки и кавычки (не в виде специальных последовательностей) , кроме трех «неэкранированных» кавычек подряд (того же вида, как и открывавшие), которые завершают запись текста.

    Если нет префикса «r» или «R» , специальные последовательности в строках интерпретируются согласно правилам стандартного «C» . Опознаются следующие специальные последовательности:

    спец.
    последовательность
    значение примечание
    newline и бэкслэш и символ
    новой строки отбрасываются
    \ бэкслэш ()
    одинарная кавычка (‘)
    « двойная кавычка («)
    a ASCII Bell (BEL)
    b ASCII Backspace (BS)
    f ASCII Formfeed (FF)
    n ASCII Linefeed (LF)
    r ASCII Carriage Return (CR)
    t ASCII Horizontal Tab (TAB)
    v ASCII Vertical Tab (VT)
    ooo символ с 8-ричным
    значением ooo
    (1,3)
    xhh символ с 16-ричным
    значением hh
    (2,3)

    Следующие специальные последовательности опознаются только в текстовых данных:

    спец.
    последовательность
    значение примечание
    N{name} Символ с именем name в базе Unicode
    uxxxx Символ с 16-битным
    16-ричным значением xxxx
    (4)
    Uxxxxxxxx Символ с 32-битным
    16-ричным значением xxxxxxxx
    (5)
    1. Как и в стандартном «C» , принимается до трех восьмеричных знаков.
    2. В отличие от стандартного «C» , принимается строго два 16-ричных знака.
    3. В байтовых данных 16- и 8-ричные специальные последовательности обозначают байт с данным значением. В текстовых данных они обозначают символ Юникода с данным кодом.
    4. Отдельные коды, составляющие части суррогатной пары, могут быть закодированы при помощи специальных последовательностей. В отличие от стандартного «C» , требуется строго два 16-ричных знака.
    5. Этим способом могут быть закодированы любые символы Юникода, но символы вне «Basic Multilingual Plane» (BMP) будут закодированы с помощью суррогатной пары, если Питон скомпилирован под использование 16-битных элементов кода Юникод (по умолчанию). Отдельные коды, составляющие части суррогатной пары, могут быть закодированы при помощи специальных последовательностей.

    В отличие от стандартного «C» , все неопознанные последовательности символов оставляются в тексте неизменными, т. е. бэкслэш остается в тексте. (Такое поведение полезно при отладке: если особая последовательность символов написана неправильно, то в том, что появляется на выходе легче заметить ошибку.) Кроме того, важно отметить, что управляющие последовательности опознающиеся только в записи текста попадают в категорию неопознанных последовательностей в записи байтовых данных.

    Даже в «сыром» тексте кавычки могут быть вставлены через бэкслэш, но бэкслэш остается в строке, например, «r»»»»является верной текстовой записью, состоящей из двух символов: бэкслэш и двойные кавычки; «r»»» не является допустимой записью (даже «сырой» текст не может заканчиваться нечётным количеством бэкслэшей). В частности, «сырой» текст не может оканчиваться одним бэкслэшем (поскольку бэкслэш превращает следующую за ним кавычку в текст). Отметьте также, что один бэкслэш подряд, за которым сразу следует переход на новую строку интерпретируется как эти два символа, являющиеся частью строки, а не как продолжение строки.

    2.4.2. Соединение текстовых записей (литералов)[править]

    Допустимы несколько идущих подряд текстовых записей, разделённых пробелами (возможно, с использованием разных типов пар кавычек) — их значение эквивалентно значению одной текстовой записи, являющейся их соединением. Таким образом, «»hello» ‘world’» эквивалентно «»helloworld»» . Эта особенность позволяет уменьшать количество необходимых бэкслэшей, удобно разделять длинные тексты на много физических строк, или даже добавлять комментарии к отдельным фрагментам текста, например:

    re.compile("[A-Za-z_]"     # буква или подчёркивание
                "[A-Za-z0-9_]*" # буква, цифра или подчёркивание
               )
    

    Обратите внимание, что это свойство определено на синтаксическом уровне, но реализуется во время компиляции. Для соединения фрагментов текста во время исполнения – должен использоваться оператор «+» . Заметьте также, что при соединении текста могут использоваться различные стили оформления для каждого фрагмента (даже смешивание «сырого» текста и в тройных кавычках) .

    2.4.3. Непосредственная запись чисел[править]

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

    Заметьте, что знак не является частью записи числа — такая формулировка, как «-1» , на самом деле является выражением, состоящим из унарного оператора «-» и числа «1» .

    2.4.4. Запись целых чисел[править]

    Запись целых чисел имеет следующее лексическое определение:

    integer        ::=  decimalinteger | octinteger | hexinteger | bininteger
    decimalinteger ::=  nonzerodigit digit* | "0"+
    nonzerodigit   ::=  "1"..."9"
    digit          ::=  "0"..."9"
    octinteger     ::=  "0" ("o" | "O") octdigit+
    hexinteger     ::=  "0" ("x" | "X") hexdigit+
    bininteger     ::=  "0" ("b" | "B") bindigit+
    octdigit       ::=  "0"..."7"
    hexdigit       ::=  digit | "a"..."f" | "A"..."F"
    bindigit       ::=  "0" | "1"
    

    Нет ограничения длины записи числа, кроме размера доступной памяти.

    Обратите внимание, что нули в начале ненулевого десятичного числа не допускаются. Это сделано для отличения их от восьмеричной записи в стиле «C» , которая использовалась в Питоне до версии 3.0 .

    Некоторые примеры записи целых чисел:

    7      2147483647                         0o177     0b100110111
    3      79228162514264337593543950336      0o377     0x100000000
           79228162514264337593543950336                0xdeadbeef
    

    2.4.5. Запись дробных чисел (с плавающей запятой)[править]

    Запись дробных чисел имеет следующее лексическое определение:

    floatnumber   ::=  pointfloat | exponentfloat
    pointfloat    ::=  [intpart] fraction | intpart "."
    exponentfloat ::=  (intpart | pointfloat) exponent
    intpart       ::=  digit+
    fraction      ::=  "." digit+
    exponent      ::=  ("e" | "E") ["+" | "-"] digit+
    

    Заметьте, что в целой и экспонентной частях всегда подразумевается основание «десять» . Например, «077e010» является допустимым и означает то же, что и «77e10» . Допустимый диапазон дробных чисел может различаться в разных реализациях. Примеры записи дробных чисел:

    3.14    10.    .001    1e100    3.14e-10    0e0
    

    Заметьте, что знак не является частью записи числа — такая формулировка, как «-1» , на самом деле является выражением, состоящим из унарного оператора «-» и числа «1» .

    2.4.6. Запись мнимых чисел[править]

    Запись мнимых чисел имеет следующее лексическое определение:

    imagnumber ::=  (floatnumber | intpart) ("j" | "J")
    

    Под мнимое число отводится комплексное число с действительной частью «0» . Комплексные числа представлены в виде пары чисел с плавающей точкой, которые имеют обычные ограничения диапазона их значений. Чтобы создать комплексное число с ненулевой действительной частью, нужно сложить обычное дробное число с мнимым числом, например, «(3 + 4j)» . Некоторые примеры записи мнимых чисел:

    3.14j    10.j    10j     .001j    1e100j    3.14e-10j
    

    2.5. Операторы[править]

    Следующие лексемы являются операторами:

    +       -       *       **      /       //      %
    <<      >>      &       |       ^       ~
    <       >       <=      >=      ==      !=
    

    2.6. Разделители[править]

    Следующие лексемы выполняют роль грамматических разделителей:

    (       )       [       ]       {       }
    ,       :       .       ;       @       =
    +=      -=      *=      /=      //=     %=
    &=      |=      ^=      >>=     <<=     **=
    

    Точка также используется в записи дробных и мнимых чисел. Последовательность из трех точек имеет особое значение — обозначение пропуска («ellipsis») . Вторая половина этого списка – расширенные операции присваивания – лексически являются разделителями, и одновременно выполняют операцию.

    Следующие печатные символы ASCII имеют особое значение как часть других лексем, и, таким образом, важны для лексического анализатора:

    '       "       #       
    

    Следующие печатные символы ASCII не используются в Питоне. Их появление за пределами записи текстовых данных или комментариев безусловно является ошибкой:

    $       ?
    

    Продолжение перевода[править]

    Перевод происходит, например, на : «http://notabenoid.com/book/5672/» …

    Понравилась статья? Поделить с друзьями:
  • Электрогриль tefal optigrill gc712d34 инструкция по применению
  • Клеевой пистолет кпс 24800 инструкция по применению
  • Калина руководство по эксплуатации цветное
  • Стабилизатор voltage regulator 600 va инструкция по применению
  • Бишофит гель бальзам инструкция добрый аптекарь