7. Bibliothèques de fonctions#
Python dispose d’un ensemble de fonctions toujours accessibles. Nous en avons vu quelques une : print
, input
, int
, str
, type
, id
. On parle de fonctions natives (« built-in » en anglais). La liste de toutes ces fonctions et leur fonctionnement est disponible sur la documentation de Python 3.7. Nous allons découvrir la plus part de ces fonctions durant le cours.
Pour étendre les possibilités du langage, il est possible d’importer des modules supplémentaires. Un module est un ensemble de fonctions. Certains modules forment ce que l’on appelle la bibliothèque standard. Ils sont présents sur toute machine disposant de Python. D’autres modules sont des bibliothèques additionnelles qui doivent être installés en plus. Une fois qu’un module a été installé, il peut être utilisé comme n’importe quel module de la bibliothèque standard.
7.1. Importer un module#
Pour importer un module, on utilise le mot clef import
suivit du nom du module que l’on souhaite. Par exemple, pour disposer de fonction de tirage aléatoire, on importe le module random
(documentation). Le module doit être importé une fois à chaque exécution du programme.
import random
On peut alors utiliser les fonctions en les préfixant par le nom du module. Par exemple si l’on souhaite utiliser la fonction randint(a,b)
(Return a random integer N such that a <= N <= b.) on doit écrire random.randint(a,b)
.
random.randint(0,2)
1
Ce peut être un peu pénible si la fonction randint
est utilisée un grand nombre de fois. Une autre solution est de ne pas importer le module mais les fonctions du module. On peut importer juste la fonction randint
.
from random import randint
randint(0,2)
2
On peut également importer toutes les fonctions du modules. On peut par exemple accéder à la fonction unform(a,b)
(documentation : Return a random floating point number N such that a <= N <= b for a <= b and b <= N <= a for b < a.).
from random import *
uniform(0, 10)
1.4698046398349396
Attention, après avoir importer l’intégralité des fonctions contenues dans random
il devient impossible de d’accéder à la fonction randint
en utilisant la première notation : random.randint
. On obtient une erreur cryptique : AttributeError: 'builtin_function_or_method' object has no attribute 'randint'
.
random.randint(0,1)
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
Cell In[7], line 1
----> 1 random.randint(0,1)
AttributeError: 'builtin_function_or_method' object has no attribute 'randint'
Il se trouve que le module random
contient une fonction random()
(documentation : return the next random floating point number in the range [0.0, 1.0)). Lorsque l’on importe cette fonction avec l’instruction from random import *
, on masque le module random
que l’on avait importé au tout début.
Il faut donc être vigilent et privilégier l’import des seules fonctions dont on a besoin.
7.2. Bibliothèques additionnelles#
Il existe un très grand nombre de modules additionnels, la plus part s’intalleront de la même manière. Nous allons le voir rapidement avec un premier module de géographie, folium
, qui permet d’afficher des cartes sous forme de page web.
Suivant la manière dont votre installation de Python a été réalisé sur votre machine, il va exister différentes façons d’installer ce module. La plus simple est probablement d’utiliser le gestionnaire de bibliothèque de Python : pip
. L’installation de folium
consiste simplement à ouvrir un terminal et taper : pip install folium
.
Si vous utilisez Anaconda, vous pouvez également utiliser son interface, ouvrir la page dédiée aux modules et demander l’installation de folium
.
Dans notre cas, c’est encore plus simple. Replit installe automatiquement les packages lorsqu’on les utilise.
Une fois l’installation faite, nous allons pour importer folium et afficher une carte.
import folium
m = folium.Map((48.82695320497729, 2.383139522722579))
Dans la cellule ci-dessus nous appelons le module folium
pour créer une carte. Pour cela, on appelle la fonction Map
avec un paramètre un peu particulier (48.82695320497729, 2.383139522722579)
. C’est un couple de deux nombres (les paranthèses sont importantes), nous reviendrons vite sur son fonctionnement. Il représente les coordonnées géographique du batiment Olympe de Gouges de l’université. La carte créée est ensuite affectée à la variable m
.
Replit, ne nous permet pas encore de voir la carte il faudra la sauvegarder mais avant cela, ajoutons un marqueur.
folium.Marker(
location=(48.82695320497729, 2.383139522722579),
popup="Olympe de Gouges",
icon=folium.Icon(color="blue"),
).add_to(m)
Nous voici avec un marqueur sur le batiment. Il y aurait beaucoup de choses à dire sur ces quelques lignes. Nous verrons tout cela dans le détail mais nous avons besoin de prendre un peu de temps pour parler de choses assez basiques d’abord. Gardons simplement à l’esprit que nous avons à notre portée des choses pour s’amuser.
7.3. Mise en oeuvre#
Nous allons maintenant pouvoir réaliser un premier programme avec tout ce que nous avons vu. Pour cela, nous n’utiliserons plus la console de Repl mais allons créer un programme. Voici les étapes pour cela.
Dans le dossier TGAE
créer un projet Python intitulé demo_folium
. Dans la partie centrale, en blanc, qui correspond au fichier main.py
, inscrivé le code suivant.
Ensuite vous pourrez exécuter votre programme en cliquant sur le boutton run, en vert. L’interpréteur Python va alors exécuté toutes les lignes contenues dans le fichier main.py
. La première fois, c’est un peu long car Repl doit installer la bibliothèque folium
.
import folium
m = folium.Map((48.82695320497729, 2.383139522722579))
folium.Marker(
location=(48.82695320497729, 2.383139522722579),
popup="Olympe de Gouges",
icon=folium.Icon(color="blue"),
).add_to(m)
m.save("demo.html")
Vous devriez voir apparaitre un fichier demo.html
dans la partie gauche. Vous pouvez le télécharger (en cliquant sur « … ») et l’ouvrir dans votre navigateur.