Bases de Python : Fonctions, modules et
importations
Parcours : Modélisation Simulation et Calcul Scientifique(L2S4)
TRAORE Urbain
Université virtuelle du Burkina Faso
28 avril 2023
28 avril 2023 1 / 38
Plan
1 Fonction en Python
2 Modules et importation
28 avril 2023 2 / 38
Motivation
Nous avons déjà rencontré diverses fonctions prédéfinies : print(),
input(), range(), len().
Lorsqu’une tâche doit être réalisée plusieurs fois par un
programme avec seulement des paramètres différents, on peut
l’isoler au sein d’une fonction. Cette approche est également
intéressante si la personne qui définit la fonction est différente de
celle qui l’utilise. Par exemple, nous avons déjà utilisé la fonction
print() qui avait été définie par quelqu’un d’autre.
Fonction en Python 28 avril 2023 3 / 38
Définition d’une fonction - def
Syntaxe
La syntaxe Python pour la définition d’une fonction est la suivante :
Vous pouvez choisir n’importe quel nom pour la fonction que vous
créez, à l’exception des mots-clés réservés du langage, et à la
condition de n’utiliser aucun caractère spécial ou accentué (le
caractère souligné "‘_"’ est permis). Comme c’est le cas pour les
noms de variables, on utilise par convention des minuscules,
notamment au début du nom (les noms commençant par une
majuscule seront réservés aux classes).
Fonction en Python 28 avril 2023 4 / 38
Corps de la fonction
Comme les instructions if, for et while, l’instruction def est une
instruction composée. La ligne contenant cette instruction se
termine obligatoirement par un deux-points : qui introduisent un
bloc d’instructions qui est précisé grâce à l’indentation. Ce bloc
d’instructions constitue le corps de la fonction.
Fonction en Python 28 avril 2023 5 / 38
Fonction sans paramètre
Affichage après exécution
Fonction en Python 28 avril 2023 6 / 38
Fonction sans paramètre
En entrant ces quelques lignes, nous avons défini une fonction très
simple qui compte jusqu’à 2. Notez bien les parenthèses, les
deux-points, et l’indentation du bloc d’instructions qui suit la ligne
d’en-tête (c’est ce bloc d’instructions qui constitue le corps de la
fonction proprement dite).
Après la définition de la fonction, on trouve le programme principal
qui débute par l’instruction print("bonjour"). Il y a ensuite au sein
du programme principal, l’appel de la fonction grâce à
compteur3().
Fonction en Python 28 avril 2023 7 / 38
Appel d’une fonction
Il est également possible de sauvegarder ce programme en tant
que script au sein d’IDLE en précisant l’extension .py :
[Link]. Après avoir exécuté ce script, pour utiliser à
nouveau la fonction que nous venons de définir, il suffit de
l’appeler par son nom au niveau du shell. Ainsi :
Nous pouvons maintenant réutiliser cette fonction à plusieurs
reprises, autant de fois que nous le souhaitons.
Nous pouvons également l’incorporer dans la définition d’une
autre fonction.
Fonction en Python 28 avril 2023 8 / 38
Fonction avec paramètre
Exemple
Affichage après exécution :
L’argument que nous utilisons dans l’appel d’une fonction peut être
une variable.
Fonction en Python 28 avril 2023 9 / 38
Fonction avec plusieurs paramètres
Exemple
La fonction suivante utilise trois paramètres : start qui contient la
valeur de départ, stop la borne supérieure exclue comme dans
l’exemple précédent et step le pas du compteur.
Fonction en Python 28 avril 2023 10 / 38
Note
• Pour définir une fonction avec plusieurs paramètres, il suffit
d’inclure ceux-ci entre les parenthèses qui suivent le nom de la
fonction, en les séparant à l’aide de virgules.
• Lors de l’appel de la fonction, les arguments utilisés doivent
être fournis dans le même ordre que celui des paramètres
correspondants (en les séparant eux aussi à l’aide de virgules).
Le premier argument sera affecté au premier paramètre, le
second argument sera affecté au second paramètre, et ainsi de
suite.
Fonction en Python 28 avril 2023 11 / 38
Variables locales, variables globales
Lorsqu’une fonction est appelée, Python réserve pour elle (dans la
mémoire de l’ordinateur) un espace de noms. Cet espace de noms
local à la fonction est à distinguer de l’espace de noms global où
se trouvait les variables du programme principal. Dans l’espace de
noms local, nous aurons des variables qui ne sont accessibles
qu’au sein de la fonction. C’est par exemple le cas des variables
start, stop, step et i dans l’exemple précédent.
Fonction en Python 28 avril 2023 12 / 38
Variables locales, variables globales
A chaque fois que nous définissons des variables à l’intérieur du
corps d’une fonction, ces variables ne sont accessibles qu’à la
fonction elle-même. On dit que ces variables sont des variables
locales à la fonction. Une variable locale peut avoir le même nom
qu’une variable de l’espace de noms global mais elle reste
néanmoins indépendante.
Les contenus des variables locales sont stockés dans l’espace de
noms local qui est inaccessible depuis l’extérieur de la fonction.
Fonction en Python 28 avril 2023 13 / 38
Variables locales, variables globales
Les variables définies à l’extérieur d’une fonction sont des variables
globales. Leur contenu est "‘visible"’ de l’intérieur d’une fonction,
mais la fonction ne peut pas le modifier.
Exemple
Affichage après exécution
Fonction en Python 28 avril 2023 14 / 38
Utilisation d’une variable globale - global
Il peut se faire par exemple que vous ayez à définir une fonction
qui soit capable de modifier une variable globale. Pour atteindre ce
résultat, il vous suffira d’utiliser l’instruction global. Cette
instruction permet d’indiquer - à l’intérieur de la définition d’une
fonction - quelles sont les variables à traiter globalement.
On va ici créer une fonction qui a accès à la variable globale b.
Affichage après exécution
Fonction en Python 28 avril 2023 15 / 38
Fonctions et procédures
Les fonctions que nous avons décrites jusqu’à présent ne sont pas
tout à fait des fonctions au sens strict, mais plus exactement des
procédures. Il existe des fonctions comme print qui ne retournent
rien (attention, retourner et afficher ne sont pas identiques) et des
fonctions, telles que input ou type qui retournent une valeur. Vous
pouvez capturer cette valeur en mettant une variable devant
(exemple variable2 = type(variable1)). En effet, les fonctions
travaillent en général sur des données et retournent le résultat
obtenu, suite à un calcul par exemple. Une « vraie » fonction (au
sens strict) doit en effet renvoyer une valeur lorsqu’elle se termine.
U
Fonction en Python 28 avril 2023 16 / 38
Fonctions et procédures
Voici un exemple extrêmement simple :
L’instruction return signifie qu’on va retourner la valeur, pour
pouvoir la récupérer ensuite et la stocker dans une variable par
exemple. Cette instruction arrête le déroulement de la fonction, du
code placé après le return ne s’exécutera pas.
Fonction en Python 28 avril 2023 17 / 38
Valeurs par défaut pour les paramètres
Dans la définition d’une fonction, il est possible de définir un
argument par défaut pour chacun des paramètres. On obtient ainsi
une fonction qui peut être appelée avec une partie seulement des
arguments attendus.
Exemples
Fonction en Python 28 avril 2023 18 / 38
Valeurs par défaut pour les paramètres
Exemples
Lorsque l’on appelle cette fonction en ne lui fournissant que le
premier argument, le second reçoit tout de même une valeur par
défaut. Si l’on fournit les deux arguments, la valeur par défaut pour
le deuxième est tout simplement ignorée.
Fonction en Python 28 avril 2023 19 / 38
Arguments avec étiquettes
Dans la plupart des langages de programmation, les arguments
que l’on fournit lors de l’appel d’une fonction doivent être fournis
exactement dans le même ordre que celui des paramètres qui leur
correspondent dans la définition de la fonction.
Python autorise cependant une souplesse beaucoup plus grande.
Si les paramètres annoncés dans la définition de la fonction ont
reçu chacun une valeur par défaut, sous la forme déjà décrite
ci-dessus, on peut faire appel à la fonction en fournissant les
arguments correspondants dans n’importe quel ordre, à la
condition de désigner nommément les paramètres
correspondants.
Fonction en Python 28 avril 2023 20 / 38
Arguments avec étiquettes
Exemples
Fonction en Python 28 avril 2023 21 / 38
Utilisation des fonctions dans un script
Pour cette première approche des fonctions, nous n’avons utilisé
jusqu’ici que des fonctions dans des scripts et pas de programme
principal dans le script. Veuillez donc essayer vous-même le petit
programme ci-dessous, lequel calcule le volume d’une sphère a
l’aide de la formule :
4
V = πR 3 .
3
Exemples
Fonction en Python 28 avril 2023 22 / 38
Utilisation des fonctions dans un script
A bien y regarder, ce programme comporte deux parties :
• les deux fonctions cube() et volume_sphere()
• le corps principal du programme.
Dans le corps principal du programme, il y a un appel de la fonction
volume_sphere().
A l’intérieur de la fonction volume_sphere(), il y a un appel de la
fonction cube().
Fonction en Python 28 avril 2023 23 / 38
Utilisation des fonctions dans un script
Notez bien que les deux parties du programme ont été disposées
dans un certain ordre :
• d’abord la définition des fonctions,
• et ensuite le corps principal du programme.
Cette disposition est nécessaire, parce que l’interpréteur exécute
les lignes d’instructions du programme l’une après l’autre, dans
l’ordre où elles apparaissent dans le code source. Dans le script, la
définition des fonctions doit donc précéder leur utilisation.
Fonction en Python 28 avril 2023 24 / 38
Fonctions et procédures
Dans cette page, nous allons répondre aux questions suivantes :
• comment utiliser une même fonction dans plusieurs
programmes différents ?
• comment avoir la définition d’une fonction dans un fichier
différent de celui qui contient le programme principal ?
Très souvent, c’est une personne qui définit une fonction et une
autre qui l’utilise. Par exemple, avec la bibliothèque matplotlib, on
peut utiliser la fonction plot() pour tracer des courbes sans avoir à
écrire nous-mêmes cette fonction. Nous allons donc voir à présent
comment définir des fonctions dans un module et faire en sorte
qu’un utilisateur puisse appeler ces fonctions dans son
programme.
Modules et importation 28 avril 2023 25 / 38
Modules et importations
Par exemple, nous allons créer un fichier nommé [Link] qui
va définir 2 fonctions : carre() et cube(). Un tel fichier est appelé un
module et il va pouvoir être importé dans un autre fichier, et en
particulier dans le fichier qui contient le programme principal.
Modules et importation 28 avril 2023 26 / 38
Modules et importations
Il est maintenant possible d’utiliser dans un programme principal
les fonctions qui ont été définies dans le module [Link].
Pour cela, il faut importer les fonctions à partir du module.
Exemple : on importe une seule fonction
Avertissement Le fichier [Link] doit être dans le même
répertoire que le programme principal (ou bien se trouver dans le
"‘path"’ de Python).
Modules et importation 28 avril 2023 27 / 38
Modules et importations
Modules et importation 28 avril 2023 28 / 38
Modules et importations
Avertissement Avertissement L’importation de toutes les
fonctions avec ∗ est fortement déconseillée. En effet, elle ne
permet pas d’avoir une vision claire des fonctions qui ont été
importées. Ceci est donc une source potentielle d’erreurs.
Exemple : on importe le module
Dans ce cas, il faut préciser le nom du module devant la fonction.
Modules et importation 28 avril 2023 29 / 38
Modules et importations
Exemple : on importe le module
Modules et importation 28 avril 2023 30 / 38
Package
Quand on a un grand nombre de modules, il peut être intéressant
de les organiser dans des dossiers. Un dossier qui rassemble des
modules est appelé un package (paquetage en français). Le nom du
package est le même que celui du dossier. Par exemple, on crée un
dossier package1 dans lequel on place le fichier [Link]
suivant :
Modules et importation 28 avril 2023 31 / 38
Package
On peut ensuite utiliser la fonction fonction1() définie dans
[Link], en important package1.module1 comme dans
l’exemple qui suit :
Il est aussi possible d’avoir des dossiers imbriqués, c’est-à-dire des
dossiers qui contiennent d’autres dossiers.
Modules et importation 28 avril 2023 32 / 38
Complements
Dans la documentation de Python, il est fait une distinction entre
script et module. Voici quelques précisions sur cette distinction.
En Python, lorsqu’on crée un fichier qui rassemble des instructions
au lieu de les taper une à une dans l’interpréteur, on appelle ce
fichier un script et on le sauvegarde avec une extension .py, par
exemple [Link].
Quand on est amené à travailler sur un programme long, il est utile
de séparer le programme en plusieurs fichiers. Certaines parties
peuvent alors être réutilisées par d’autres programmes.
Modules et importation 28 avril 2023 33 / 38
Complements
Il est par exemple possible d’effectuer la définition des fonctions
dans un fichier séparé pour ensuite les utiliser dans un script ou
dans l’interpréteur. Le fichier qui contient ces définitions a aussi
une extension .py, mais on appelle ce fichier un module.
Les modalités pour importer un module sont expliquées plus haut
dans cette page.
A l’intérieur d’un module, le nom du module (en tant que chaîne de
caractères) peut être obtenu grâce à la variable globale __name__.
Par exemple, si on utilise le module [Link] défini
précédemment, on a dans l’interpréteur :
Modules et importation 28 avril 2023 34 / 38
Complement
Un même fichier .py peut jouer le rôle de script ou de module
suivant son utilisation.
Exécution d’un module en tant que script
Quand on utilise un fichier en tant que script, la variable globale
__name__ prend pour valeur "‘__main__"’. Ceci permet d’avoir dans
le fichier un bloc d’instructions qui sera exécuté uniquement
lorsque le fichier est lancé en tant que script.
Modules et importation 28 avril 2023 35 / 38
Complements
Par exemple, pour le fichier [Link] suivant :
On peut lancer une exécution directe en tant que script et on
obtient alors :
Modules et importation 28 avril 2023 36 / 38
Complements
Ou bien on peut importer puissance2 en tant que module, par
exemple dans le fichier suivant :
Modules et importation 28 avril 2023 37 / 38