Institut Supérieur d’Informatique et de
Multimédia de Gabès (ISIMG)
Chapitre 5 : Les fonctions en Python
Année universitaire : 2024-2025
Plan
I. Introduction
II. Notions de base sur les fonctions en Python
II.1. Syntaxe
II.2. Types de fonctions
III. Les types de variables
1
I. Introduction
En programmation, une fonction est un ensemble
d’instructions que l’on peut appeler avec un nom et qui
réalise une tâche précise. Elle peut utiliser à l’entrée (ou non)
un ou plusieurs paramètres, appelés arguments, pour fournir
(ou non) un ou plusieurs résultat(s).
Une fonction qui ne fournit pas une valeur de retour est
appelée procédure.
Les fonctions permettent de mieux structurer le code et de le
rendre plus lisible en le fractionnant en blocs.
Les fonctions sont utilisées pour réaliser une même opération
plusieurs fois dans un programme.
II. Notions de base sur les fonctions en Python
II.1. Syntaxe
En Python, une fonction est définie comme suit :
def nom_fonction(liste_de_paramètres):
bloc d’instructions
return résultat(s)_renvoyé(s)
La première ligne est appelée entête.
Le mot clé def est une abréviation du mot define. Il annonce qu’on va
écrire une fonction.
Le nom de la fonction doit respecter certaines règles : Il doit commencer
par une lettre (de préférence minuscule) ou un tiret bas, ne contenir que
des caractères alphanumériques (les lettres accentuées et les caractères
spéciaux ne sont pas autorisés) et être différent des mots réservés en
Python.
2
II. Notions de base sur les fonctions en Python
La liste de paramètres représente les arguments utilisés dans la
fonction. On les écrit séparés par des virgules. Si aucun argument n’est
nécessaire, les parenthèses restent vides.
Il est obligatoire de mettre deux points à la fin de l’entête.
Le bloc d’instructions doit être indenté.
le mot clé return permet de retourner le(s) résultat(s) (le contenu
d’une ou de plusieurs variables). Il faut noter qu’une fonction ne
renvoie pas obligatoirement de valeur (exemple : fonction d’affichage).
Remarque : En Python, le mot fonction désigne à la fois les vraies
fonctions (qui renvoient un résultat) et les procédures.
II. Notions de base sur les fonctions en Python
Exemple de définition et d’appel d’une fonction
Mode Shell Mode script (somme.py)
>>>def somme (x,y): #définition de la fonction somme
z=x+y def somme(x,y):
return z z=x+y
>>> somme(5,10) return z
15 #programme principal
x=int(input('saisir un entier : '))
y=int(input('saisir un entier : '))
print(somme(x,y)) #affichage du résultat de la fonction
3
II. Notions de base sur les fonctions en Python
II.2. Types de fonctions
Fonctions en
Python
Fonctions
Fonctions Fonction
définies par
prédéfinies lambda
l’utilisateur
Fonctions sans Fonctions avec
arguments arguments
Fonctions avec Fonctions sans Fonctions avec Fonctions sans
valeur(s) de valeur de valeur(s) de valeur de
retour retour retour retour
7
II. Notions de base sur les fonctions en Python
Les fonctions prédéfinies en Python : Ce sont les fonctions
déjà définies en Python, qui sont toujours disponibles et qui
sont fréquemment utilisées. Elles proviennent de deux
sources :
Les fonctions qui sont internes à Python (exemple : input(), print(),
len(), etc.).
Les fonctions qui sont écrites par autres programmeurs et qui sont
accessibles en important le module qui les contient (exemple : la
fonction factorial du module math). L’importation d’un module peut
être réalisée selon l’une des trois méthodes suivantes :
4
II. Notions de base sur les fonctions en Python
Importation du module Appel d’une fonction du Exemple
module
import nom_module nom_module.nom_fonction(liste >>>import math
_paramètres) >>>x=math.sqrt(25)
>>>print(x)
5.0
from nom_module import nom_fonction(liste_paramètres) >>>from math import sqrt
fonction1, fonction2,… >>>print(math.sqrt(25))
5.0
>>>print(factorial(5))
Traceback (most recent call last):
File "<pyshell#4>", line 1, in
<module>
print(factorial(5))
NameError: name 'factorial' is not
defined
from nom_module import * nom_fonction(liste_paramètres) >>>from math import *
>>>print(sqrt(25))
5.0
II. Notions de base sur les fonctions en Python
La fonction lambda : C’est une fonction sans nom (anonyme)
qui contient n’importe quel nombre d’arguments et une
expression unique en une seule ligne. Elle est utilisée pour
effectuer une seule tâche. Elle est souvent utile pour appeler
une fonction dans une autre.
Syntaxe : Une fonction lambda s’écrit sous la forme suivante :
lambda liste_de_pramètres: expression
Exemple
Fonction lambda Fonction régulière
>>>(lambda x:x*x)(5) >>>def puissance (x):
25 return x*x
>>>f=lambda x:x*x >>>puissance(7)
>>>f(4) 49
16
10
5
II. Notions de base sur les fonctions en Python
Les fonctions définies par l’utilisateur (fonctions sans
paramètres) (1/3)
Ce sont des fonctions sans entrée et qui peuvent retourner un résultat
ou non.
Exemple (fonction sans résultat)
Définition d’une Appel de la fonction Explication
fonction d’affichage
>>>def affichage(): >>>affichage() L’affichage obtenu à
for i in range (2): 0 partir de la fonction
print(i) 1 définie n’est pas
>>>a=affichage() considéré comme un
0 résultat. En effet, le type
1 de retour de la variable a
>>>a #pas d’affichage est 'None' qui signifie
>>>type(a) l’absence d’une valeur de
<class 'NoneType'> retour.
11
II. Notions de base sur les fonctions en Python
Les fonctions définies par l’utilisateur (fonctions sans
paramètres) (2/3)
Exemple (fonction avec un seul résultat)
Définition d’une fonction de saisie Appel de la fonction Explication
>>>def saisie(): >>>saisie() Le résultat de la fonction
x=int(input('saisir un entier : ')) saisir un entier : 5 (l’entier saisi) est stocké
return x 5 dans la variable a. Le
>>>a=saisie() type de la variable a
saisir un entier : 7 correspond au type du
>>>a résultat renvoyé par la
7 fonction (type entier).
>>>type(a)
<class 'int'>
12
6
II. Notions de base sur les fonctions en Python
Les fonctions définies par l’utilisateur (fonctions sans
paramètres) (3/3)
Exemple (fonction avec plusieurs résultats)
Définition d’une fonction de saisie Appel de la Explication
fonction
>>>def saisie1(): >>>L=saisie1() Cette fonction permet de
L=[] saisir un entier : 5 saisir et de retourner
for i in range (3): saisir un entier : 7 trois variables qui sont
x=int(input('saisir un entier : ')) saisir un entier : 8 stockées comme des
L.append(x) >>>L éléments dans une liste.
return L [5,7,8] La fonction renvoie un
>>>type(L) résultat de type list.
<class 'list'>
13
II. Notions de base sur les fonctions en Python
Les fonctions définies par l’utilisateur (fonctions avec
paramètres) (1/4)
Ce sont des fonctions avec une (ou plusieurs) entrée(s) et qui peuvent
retourner un résultat ou non.
En Python, on n’a pas besoin de préciser le type des paramètres
utilisés dans une fonction.
Exemple (fonction sans résultat)
Définition d’une Appel de la fonction Explication
fonction somme
>>>def somme(x,y): >>>somme(5,7) L’opérateur + peut être
z=x+y 12 utilisé avec plusieurs types
print(z) >>>somme(8,1.4) de variables (somme des
9.4 nombres entiers et/ou
>>>somme('bon', 'jour') réels, complexes,
'bonjour' concaténation des chaines
de caractères, etc.)
14
7
II. Notions de base sur les fonctions en Python
Les fonctions définies par l’utilisateur (fonctions avec
paramètres) (2/4)
Exemple (fonction avec résultat)
Définition d’une fonction de saisie Appel de la Explication
fonction
>>>def saisie1(n): >>>l=saisie1(3) Cette fonction permet de
L=[] saisir un entier : 5 saisir et de retourner n
for i in range (n): saisir un entier : 7 variables qui sont
x=int(input('saisir un entier : ')) saisir un entier : 8 stockées comme des
L.append(x) >>>l éléments dans une liste.
return L [5,7,8] La fonction renvoie un
>>>type(l) résultat de type list.
<class 'list'>
15
II. Notions de base sur les fonctions en Python
Les fonctions définies par l’utilisateur (fonctions avec
paramètres) (3/4)
En Python, le nombre de paramètres d’une fonction peut être variable
ou fixe. Il existe deux méthodes différentes pour créer une fonction
avec un nombre d’arguments variable :
Définir des valeurs de paramètres par défaut : Dans ce cas, on attribue des valeurs
par défaut aux paramètres. Si aucune valeur de l’un des paramètres n’est passée
lors de l’appel de la fonction, la valeur par défaut sera utilisée. Il faut mettre les
paramètres obligatoires suivis par les paramètres par défaut.
Utiliser une syntaxe spécifique pour passer un nombre arbitraire de paramètres :
Lors de la définition d’une fonction, l’utilisation de la syntaxe *args permet
d’indiquer que le nombre de paramètres de cette fonction est variable.
16
8
II. Notions de base sur les fonctions en Python
Les fonctions définies par l’utilisateur (fonctions avec
paramètres) (4/4)
Exemples (fonctions avec un nombre de paramètres variable)
Définition d’une Appel de la Explication
fonction fonction
Fonction >>>def produit(x,y=10): >>>produit(5) Dans le premier appel de la fonction,
avec z=x*y 50 la valeur par défaut de y a été utilisée
paramètres return z >>>produit(7,8) vu qu’on a passé une valeur pour un
par défaut 56 seul paramètre. Dans le deuxième
appel de la fonction, la valeur par
défaut n’était pas utilisée vu qu’on a
passé une valeur pour chaque
paramètre.
Fonction >>>def somme(*args): >>>somme(4,5) Dans le premier appel de la fonction,
avec un s=0 9 le nombre de paramètres était deux.
nombre for i in (args): >>>somme(7,8,2) Dans le deuxième appel de la fonction,
d’arguments s+=i 17 on a passé trois arguments.
arbitraire return(s)
17
III. Les types de variables
En Python, il existe deux types de variables :
Les variables locales : Ce sont des variables créées à l’intérieur d’une
fonction. Elles ne sont pas visibles qu’à l’intérieur de la fonction.
Les variables globales : Ce sont les variables créées dans le programme
principal. Elles sont visibles partout dans le programme. Elles sont également
accessibles par toutes les fonctions du programme. Les variables déclarées à
l’extérieur des fonctions sont en général globales.
Exemple
Définition d’une Appel de la fonction Explication
fonction
>>> x=10 >>> produit(4) La variable x est globale. Sa
>>> def produit(a): 40 valeur a été utilisée dans la
y=x*a >>> y fonction.
return y Traceback (most recent call last): La variable y est locale à la
File "<pyshell#17>", line 1, in <module> fonction. Elle n’est pas
y accessible dans le
NameError: name 'y' is not defined programme principal.
18
9
III. Les types de variables
Priorité des variables locales et globales
Dans un programme, on peut avoir des variables locales et globales
qui ont le même nom avec des valeurs différentes. Lors de l’appel
d’une variable, Python cherche d’abord les variables locales puis
globales.
Exemple
Définition d’une Appel de la Explication
fonction fonction
>>> x=10 >>> produit(7) Lors du calcul du produit,
>>> def produit(a): 35 la valeur de la variable
x=5 locale x a été utilisée et
y=x*a non pas celle de la variable
return y globale.
19
III. Les types de variables
Modification des variables globales
Cas des variables de types non mutables : La valeur d’une variable
globale ne peut pas être modifiée à l’intérieur d’une fonction. Pour
apporter une modification à une variable dans un contexte local, on
doit utiliser le mot clé global suivi du nom de la variable à l’intérieur
de la fonction.
Cas des variables de types mutables : La valeur d’une variable globale
peut être modifiée à l’intérieur d’une fonction sans recours à
l’utilisation du mot clé global.
20
10
III. Les types de variables
Exemples (variables globales de types non mutables)
Définition d’une Appel de la fonction Explication
fonction
>>>def concat(y): >>>x='bon' La variable x dans la fonction est une
x=x*y >>>concat(2) variable locale qui a été référencée
return x Traceback (most recent call last): avant d’en affecter une valeur
File "<pyshell#39>", line 1, in utiliser le mot clé global pour indiquer
<module> à la fonction qu’il s’agit d’une variable
concat(2) globale. Dans ce cas, on peut accéder
File "<pyshell#37>", line 2, in concat à la variable globale x dans la fonction
x=x*y concat.
UnboundLocalError: local variable 'x'
referenced before assignment
>>>def concat(y): >>>x,y='bon',1 La valeur de la variable globale x a été
global x >>> concat(y) modifiée à l’intérieur de la fonction
y=2 'bonbon' grâce à l’utilisation du mot clé global.
x=x*y >>> x La valeur de la variable globale y n’a
return x 'bonbon' pas été modifiée car la variable y à
>>> y l’intérieur de la fonction a une portée
1 locale. 21
III. Les types de variables
Exemple (variables globales de types mutables)
Définition d’une fonction Appel de la fonction Explication
>>>def modifier(x): >>>L=[2,3,4] La liste L est une variable globale
for i in range(len(L)): >>>modifier(2) qui a été modifiée à l’intérieur
L[i]+=x [4, 5, 6] de la fonction, sans utilisation du
print(L) mot clé global, vu qu’elle est
une variable de type mutable.
22
11