Mojo: Intégration de Python

Par mmane, 3 mars, 2024
logo du langage de programmation Mojo

Bonjour!

Bienvenue à un nouveau blog sur le langage de programmation Mojo. La semaine dernière, nous avons découvert comment installer Mojo sur un ordinateur Linux et nous avons aussi créé notre premier algorithme simple. Cette semaine, nous allons voir l’intégration du langage Python avec Mojo.

 

Comme vu dans les articles précédents, Mojo est un langage de programmation qui s’inspire de plusieurs autres langages. Modular affirme qu’un de leurs buts long terme est de rendre Mojo un « super set » ou une extension de Python. Ils souhaitent que tous les programmes écrits en Mojo puissent s’intégrer sans problèmes avec un code existant en Python, et vice versa.

 

Actuellement, il est déjà possible d’importer des modules Python dans des algorithmes Mojo. Il suffit d’ajouter cette ligne dans votre code : 

from python import Python

Puis d’importer le module qu’on souhaite avoir dans une variable comme ceci :

 var numpy = Python.import_module("numpy")

Enfin, nous pouvons utiliser cette variable (ici, numpy) comme nous le ferions dans Python.

Exemple: 

var array = numpy.array([1, 2, 3])

print(array)

Pour importer nos propres modules Python, il s’agit du même principe. 

from python import Python

fn main() raises:

   Python.add_to_path("path/to/module")

    var mypython = Python.import_module("mypython")

    var values = mypython.gen_random_values(2, 3)

    print(values)

Cependant, il est impossible d’importer uniquement des fonctions ou des classes d’un module. Nous devons importer le module dans son entièreté et les appeler dans des variables pour les utiliser.

Aussi, Mojo ne supporte pas le code top-level, c’est-à-dire du code qui se situe à l’indentation 0 qui n’est pas une fonction. De ce fait, l’importation d’un module (import_module()) doit se faire dans la fonction dans laquelle les éléments de ce module vont être utilisés. Alors, il est possible que nous ayons besoin d’importer plusieurs fois un même module dans différentes fonctions ou nous allons devoir créer une référence vers ce module.

** comme en Python, la logic d’initialisation d’un module ne se fait qu’une seule fois, même si celui-ci est appelé plusieurs fois. Alors, il n’y a aucune perte de performance si nous devons appeler un module plusieurs fois.

 

Références

« Python integration», Modular.com, https://docs.modular.com/mojo/manual/python/ (Page consulté le 02 mars 2024).

stackoverflow.com, https://stackoverflow.com/questions/18138166/what-is-a-top-level-statement-in-python (Page consulté le 02 mars 2024).

 

Étiquettes

Commentaires