LES FONCTIONS DANS
LE LANGAGE PYTHON
Imene Sghaier
2017-2018
INTRODUCTION
En programmation, on est souvent amené à utiliser plusieurs fois des
groupes d'instructions dans un but très précis: fonctions ou modules.
Les fonctions permettent de regrouper plusieurs instructions dans un
bloc qui sera appelé grâce à un nom.
D'ailleurs, vous avez déjà vu que Python offre un nombre de
fonctions prédéfinies compilées et prêtes à l’utilisation : print et
input en font partie par exemple.
On distingue les fonctions qui se chargent au moment du démarrage
de l’interpréteur comme print(), d’autres qui sont chargées lors de
l’importation de modules comme la fonction sqrt du module math et
copy du module copy.
Les modules permettent de regrouper plusieurs fonctions selon le
même principe. Toutes les fonctions mathématiques, par exemple,
peuvent être placées dans un module dédié aux mathématiques
Dans ce chapitre vous aurez une initiation aux fonctions sous
Python. Nous allons nous habituer à regrouper dans des fonctions des
parties de notre code que nous serons amenés à réutiliser
2
Imene Sghaier-Programmation Python
SYNTAXE DE DÉFINITION
On crée une fonction selon le schéma suivant :
def nom_de_la_fonction(par1, par2, par3, parN):
# Bloc d'instructions
def, mot-clé qui est l'abréviation de « define
Le nom de la fonction, qui se nomme exactement comme une
variable
Les paramètres sont séparés par des virgules et la liste est
encadrée par des parenthèses ouvrante
Les deux points, encore et toujours, qui clôturent la ligne.
Les parenthèses sont obligatoires, quand bien même votre
fonction n'attendrait aucun paramètre.
Imene Sghaier-Programmation Python
EXEMPLE
Imene Sghaier-Programmation Python
VALEURS PAR DÉFAUTS DES PARAMÈTRES
On peut également préciser une valeur par défaut pour les
paramètres de la fonction.
Imene Sghaier-Programmation Python
VALEURS PAR DÉFAUTS DES PARAMÈTRES
def fonc(a=1, b=2, c=3, d=4, e=5):
print("a =", a, "b =", b, "c =", c, "d =", d, "e =", e)
INSTRUCTION RÉSULTAT
fonc() a=1b=2c=3d=4e=5
fonc(4) a=4b=2c=3d=4e=5
fonc(b=8, d=5) a=1b=8c=3d=5e=5
fonc(b=35, c=48, a=4, e=9) a = 4 b = 35 c = 48 d = 4 e = 9
Imene Sghaier-Programmation Python
SIGNATURE D'UNE FONCTION
En Python comme vous avez pu le voir, on ne
précise pas les types des paramètres. Dans ce
langage, la signature d'une fonction est tout
simplement son nom. Cela signifie que vous ne
pouvez définir deux fonctions du même nom (si
vous le faites, l'ancienne définition est écrasée par
la nouvelle).
Retenez simplement que, comme pour les
variables, un nom de fonction ne renvoie que vers
une fonction unique, on ne peut surcharger de
fonctions en Pythonµ
Imene Sghaier-Programmation Python
PARAMÈTRES POSITIONNELS
Python autorise l’appel des fonctions sans respecter l’ordre des
arguments:
Imene Sghaier-Programmation Python
NOMBRES DE PARAMÈTRES VARIABLE
Python permet de définir une fonction avec un nombre
arbitraire de paramètres. On appelle ce paramètre
généralement args il est toujours précédé par une *:
Imene Sghaier-Programmation Python
L'INSTRUCTION RETURN
les fonctions travaillent en général sur des données et
renvoient le résultat obtenu, suite à un calcul par exemple.
Prenons un exemple simple : une fonction chargée de mettre
au carré une valeur passée en argument.
def carre(valeur):
return valeur * valeur
L'instruction return signifie qu'on va renvoyer 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, le code
situé après le return ne s'exécutera pas.
Exemple
X=input(‘entrer une chaine SVP’)
10
Imene Sghaier-Programmation Python
L'INSTRUCTION RETURN
11
Imene Sghaier-Programmation Python
L'INSTRUCTION RETURN
Quand une fonction retourne plus d’un
paramètre en retour, le type tuple s’avère
très utile
12
Imene Sghaier-Programmation Python
MODE DE PASSAGE DE PARAMÈTRE
Passage par valeur Passage par référence
13
Imene Sghaier-Programmation Python
LES FONCTIONS LAMBDA
Python nous propose un autre moyen de créer des fonctions,
des fonctions extrêmement courtes car limitées à une seule
instruction.
Syntaxe
lambda arg1, arg2,… : instruction de retour
On a bien créé une fonction lambda mais on ne dispose ici
d'aucun moyen pour l'appeler. On peut tout simplement la
stocker dans une variable, par une simple affectation :
14
Imene Sghaier-Programmation Python
LES FONCTIONS LAMBDA
Les fonctions lambda sont réservées à des situations simples.
Leur définition doit tenir une seule ligne et elles ne peuvent
pas contenir des instructions compos »es (pas d’affectation,
pas de boucles…)
15
Imene Sghaier-Programmation Python
GESTION DES EXCEPTION
Pour le traitement des exceptions Python offre la clause
try:
bloc_dans_lequel_l’exception_a_lieu
except: NomException1
bloc_dans_lequel_on_rattrape_ l’exception1
except: NomException2
bloc_dans_lequel_on_rattrape_ l’exception2
except: NomExceptionN
bloc_dans_lequel_on_rattrape_ l’exceptionN
else:
bloc_exécuté_si_tout_va_bien
On pourra faire le même traitement pour divers types
d’exception, pour cela on écrira except(Excep1, Excep2,…)
16
Imene Sghaier-Programmation Python
GESTION DES EXCEPTIONS
Python possède beaucoup d’exception prédéfinies:
IndexError: Accès à un élément non existant
NameError: Utilisation d’un objet non existant
SyntaxError: Erreur de syntaxe dans une
instruction
TypeError : erreur de type
ZeroDivisionError:Division par zero
17
Imene Sghaier-Programmation Python
GESTION DES EXCEPTIONS
18
Imene Sghaier-Programmation Python