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

Совместимость с Python

Mojo не только использует синтаксис Python, но и планирует обеспечить полную совместимость с экосистемой Python. Мы поддерживаем два типа совместимости(или интероперабельности):

  • Вызов Python из Mojo:

    Вы можете импортировать существующие модули Python и использовать их в программе Mojo. Это на 100% совместимо, поскольку мы используем среду выполнения CPython без изменений для обеспечения полной совместимости с существующими библиотеками Python. Вы можете создавать объекты Python и вызывать функции Python непосредственно из Mojo, используя интерпретатор CPython в качестве динамической библиотеки (показан как libpython.dylib на рисунке 1).

  • Вызов Mojo из Python:

    Вы можете расширить свой код на Python с помощью высокопроизводительного кода Mojo (или постепенно перенести код на Mojo с Python на Mojo). Поскольку Mojo является компилируемым языком, мы не можем напрямую "вычислять" код Mojo из Python. Вместо этого вы должны объявить, какие функции и типы Mojo доступны для вызова из Python (объявить "привязки"), а затем вы можете импортировать их в свой код на Python (показан как mojo_module на рис. 1), как и в любой другой модуль — нет дополнительного этапа компиляции.

изображение

Рисунок 1. Упрощенный взгляд на то, как программа Mojo выполняет вызовы в Python, а программа на Python - в модуле Mojo.

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