Темы



[Перевод] Brython: Python в вашем браузере (ч.2)

Часть 1 • Часть 2 • Часть 3 • Часть 4

Понимание работы Brython

Ваше знакомство с различными способами установки Brython дало вам общее представление о том, как работает реализация. Вот краткое изложение некоторых характеристик, которые вы узнали на этом этапе руководства:

  • Это реализация Python на JavaScript.

  • Это транслятор Python в JavaScript и среда выполнения, работающая в браузере.

  • Он предоставляет две основные библиотеки, доступные в виде файлов JavaScript:

  • Он вызывает brython (), который компилирует код Python, содержащийся в тегах script с типом text/python. В следующих разделах вы более подробно рассмотрите принцип работы Brython.

Основные компоненты Brython

Ядро Brython содержится в brython.js или в brython.min.js, минимизированной версии движка Brython. Обе включают следующие ключевые компоненты:

  • brython () — это основная функция JavaScript, представленная в глобальном пространстве имен JavaScript. Вы не можете выполнить какой-либо код Python без вызова этой функции. Это единственная функция JavaScript, которая вызывается явно.

  • __BRYTHON__ — глобальный объект JavaScript, который содержит все внутренние объекты, необходимые для запуска скриптов Python. Этот объект не используется напрямую при написании приложений Brython. Если вы посмотрите на код Brython — как JavaScript, так и Python, то увидите регулярное появление __BRYTHON__. Вам не нужно использовать этот объект, но вы должны знать о нем, когда видите ошибку или когда хотите отладить свой код в консоли браузера.

  • Встроенные типы — это реализации встроенных типов Python в JavaScript. Например, py_int.js, py_string.js и py_dicts.js — это соответствующие реализации int, str и dict.

  • browser — это модуль браузера, который предоставляет объекты JavaScript, обычно используемые в интерфейсных веб-приложениях, такие как интерфейсы DOM с использованием document и окно браузера с использованием объекта window.

Вы увидите каждый из этих компонентов в действии, работая с примерами в этом руководстве.

Стандартная библиотека Brython

Теперь, когда у вас есть общее представление о базовом Brython-скрипте brython.js вы узнаете о сопутствующем ему brython_stdlib.js.

brython_stdlib.js предоставляет стандартную библиотеку Python. Посредством этого скрипта Brython компилирует стандартную библиотеку Python в JavaScript и объединяет результат с brython_stdlib.js.

Brython призван быть максимально приближенным к CPython, эталонной реализации Python. Для получения дополнительной информации о CPython ознакомьтесь с материалами Your Guide to the CPython Source Code и CPython Internals.

Поскольку Brython работает в контексте веб-браузера и у него есть некоторые ограничения. Например, браузер не разрешает прямой доступ к файловой системе, поэтому открытие файла с помощью os.open () невозможно. Функции, не относящиеся к веб-браузеру, могут быть не реализованы. Например, код ниже работает в среде Brython:

>>> import os
>>> os.unlink()
Traceback (most recent call last):
  File , line 1, in 
NotImplementedError: posix.unlink is not implemented

os.unlink () вызывает исключение, поскольку удаление локального файла из среды браузера небезопасно, а API файлов и записей каталогов является лишь черновым вариантом.

Brython поддерживает только собственные модули Python. Он не поддерживает модули Python, созданные на C, если только они не были переписаны на JavaScript. Например, hashlib написан на C в CPython и реализован на JavaScript в Brython. Вы можете ознакомиться со списком модулей в дистрибутиве Brython, чтобы сравнить его с реализацией CPython.

Чтобы импортировать модули из стандартной библиотеки Python вам необходимо включить brython_stdlib.js или brython_stdlib.min.js.

Brython в действии

К этому моменту вы, вероятно, задаетесь вопросом, как Brython работает в браузере, который поддерживает только JavaScript. С помощью уже рассмотренных примеров и инструментов браузера вы узнаете, как выполняется код на Python в этой среде.

В разделе Установка CDN вы видели следующий пример:



    
        <script
            src="https://cdnjs.cloudflare.com/ajax/libs/brython/3.13.0/brython.js">
        </script>
    
    
        <script type="text/python">
            import browser
            browser.alert("Hello Real Python!")
        </script>
    










После загрузки и анализа HTML-страницы brython () выполняет следующие действия:

  1. Считывает код Python, содержащийся в элементе

    Рейтинг@Mail.ru