Académique Documents
Professionnel Documents
Culture Documents
3
Fonction
◼ Pour quoi les fonctions ?
La réutilisation du code : éviter de répéter les mêmes
séries d’instructions à plusieurs endroits d’un programme
4
Fonction
5
Fonction
Exécution du code 2
Une fonction est de la fonction
considérée comme
une boite noire
1 Renvoi d’un 3
objet résultat
Appel la fonction et
transmet les arguments
6
Fonction
7
Fonction
◼ Exemple 2: la fonction len
>>> len([1,2,4])
3
8
Définition d’une fonction- def
◼ Syntaxe
9
Appel d’une fonction
◼ Syntaxe
10
Définition et appel d’une fonction
◼ Exemple
#argument: une constant
#définition de la fonction fact(4)
def fact(n):
f = 1 #argument: une variable
for i in range(1,n+1): a = 2
f *= i fact(a)
print(f)
#argument: une expression
b = 1
fact(2*a + b)
Appel s de la
fonction fact
11
L’instruction return
◼ Renvoie les résultats de la fonction et la quitte
Si d est un diviseur on quitte la
#définition de la fonction boucle sans tester les autres
def premier(n): entiers (cas n=8)
if n <= 1:
return False
for d in range(2, n//2 + 1):
if n % d == 0:
return False
return True
Arrive ici après avoir tester
#appel de la fonction tous les entiers inférieurs à
print(premier(8)) n/2 (cas de n= 11)
print(premier(11))
12
L’instruction return
◼ Peut renvoyer plusieurs valeurs simultanément.
def QuotientReste(n,m):
q = 0
while n>=m:
q=q+1
n=n-m
return q,n
13
L’instruction return
◼ Récupération des résultats lors du renvoi de plusieurs
valeurs Affectation multiple
n = 15 res1: 2,3
m = 6
quotient,reste = QuotientReste(n,m)
print(“ res1: ”, quotient,reste )
Une seule affectation
res2 = QuotientReste(n,m)
print(“res2: “,res2) Affiche un tuple:
res2: (2,3)
14
L’instruction return
◼ Une fonction peut ne pas contenir l’instruction return et
peut ne renvoyer aucune valeur.
Python renvoie dans ce cas la valeur None
15
Paramètres avec valeurs par défaut
◼ Une valeur par défaut peut être attribuée à un paramètre
lors de la définition de la fonction
◼ Syntaxe
def maFonction(param = val):
bloc
Si l’utilisateur spécifie une valeur, c’est bien cette dernière qui
est utilisée
Si l’utilisateur omet le paramètre lors de l’appel, la valeur par
défaut sera utilisée
16
Paramètres avec valeurs par défaut
◼ Les paramètres classiques peuvent coexister avec les
arguments par défauts.
Attention !! Les paramètres avec des valeurs
par défaut doivent être regroupés en
dernière position
17
Paramètres avec valeurs par défaut
◼ Paramètres avec valeurs par défaut : Exemple
def afficherInfo( nom, adresse, age = 35 ):
print ("Nom: ", nom)
print ("Age: ", age)
print ("Adresse: ",adresse)
#appels de la fonction
afficherInfo("zaid","5, Avenue Sebou, Rabat",25 )
afficherInfo("amr","8, Avenue ziz, Casa")
Nom: zaid
Nom: amr
Age: 25 #valeur fournie
Age: 35 #valeur par défaut
Adresse: 5, Avenue Sebou, Rabat
Adresse: 8, Avenue ziz, Casa
18
Passage des paramètres
◼ Python adopte un passage par référence; les paramètres
sont toujours passés par référence.
19
Passage des paramètres
◼ Exemple
#définition de la fonction
def fonct(x):
print("id de x avant modification", id(x))
x= 10
print("id de x après modification", id(x))
#appel de la fonction
a = 2
fonct(a)
print("valeur de a après appel :" , a)
print("id de a après appel", id(a))
20
Passage des paramètres
◼ Exemple
id de a avant appel 9788640
Transfert de la référence
de a au paramètre x
id de x avant modification
9788640
Run Changement de l’espace
id de x après modification après l’affectation
9788896
Dans la fonction
valeur de a après appel : 2
Retour à l’espace initial
id de a après appel 9788640
21
Passage des paramètres
◼ Deux manières :
Passage par position : Passer les paramètres selon les positions
attendues (ordre défini lors de la définition);
22
Passage des paramètres
◼ Passage par nom : Exemple
#definition de la fonction
def afficherInfo( nom, adresse, age = 35 ):
print ("Nom: ", nom)
print ("Age: ", age)
print ("Adresse: ",adresse)
#appels de la fonction
Nom: zaid
Run Age: 25
Adresse: 5, Avenue Sebou, Rabat
23
Passage des paramètres
◼ Passage par nom et arguments par défaut
#definition de la fonction Erreur
!!! Ambigüité, tentative d’affecter
deux valeurs à nom
def afficherInfo( nom, adresse, age = 35 ):
print ("Nom: ", nom)
print ("Age: ", age)
print ("Adresse: ",adresse)
#appels de la fonction
25
Paramètres et arguments
◼ Nombre variable d’arguments: l'emballage de tuple
# définition de la fnction
20
def afficheInfo( arg1,arg2, *listeArg):
10 20
print(arg1)
------------ 10
print(arg2)
('zaid', 25) ------------
print("------------")
zaid ('zaid', 25, 'rabat')
print(listeArg)
25 zaid
for var in listeArg:
print(var) 25
rabat
# Appel de la fnction
afficheInfo( 20,10,"zaid",25 )
afficheInfo( 20,10,"zaid",25,"rabat" )
26
Fonction anonyme
◼ Une fonction très courte déclarée à l’aide du mot clé lambda et
non à l’aide du mot clé def
27
Fonction anonyme
◼ Exemple
#appel de la fontion
s1=surface(3)
print(s1)
s2=surface(5)
print(s2)
28.285714285714285
Run
78.57142857142857
28
Fonction comme objet
◼ Une fonction est considérée comme un objet ; elle
possède un type et un identifiant
>>> type(maFonct)
def <class 'function'>
maFonct(v):
return v*v >>> id(maFonct)
914192039360
29
Fonction comme objet
◼ Une fonction peut être un paramètre d’une autre fonction
from math import cos Calcule l’image d’un vecteur par une
def f1(v): fonction donnée en paramètre
return v*v
31
Porté des variables
◼ Variable locale : définie dans une fonction; elle n’est pas
visible dans les autres fonctions
32
Porté des variables
33
Module
◼ Objet Python avec des attributs nommés arbitrairement
que vous pouvez lier et référencer
34
Module
◼ Peut définir des fonctions, des classes et des variables et
peut également inclure du code exécutable.
35
Comment importer des modules?
◼ Importation à l’aide de l’instruction import
import nomModule
s=surface(3)
print(s)
36
Comment importer des modules?
◼ Importation à l’aide de l’instruction import avec un
« alias »
import nomModule as alias
s=surface(3)
print(s) 37
Comment importer des modules?
◼ Importation d’objets spécifiques à l’aide de l’instruction
from
from nomModule import nomObj
Accès à l’objet avec son nom sans référencer le module
from math import pi “importation de l’objet pi ”
def surface(r):
"Surface dun cercle de rayon r”
s=r*r*pi
return s 28.285714285714285
s=surface(3)
print(s)
38
Comment importer des modules?
◼ Importation de tous les objets à l’aide de l’instruction from
from nomModule import *
Accès à l’objet avec son nom sans référencer le module
s= racineDeux()
print(s)
39
Comment créer un module personnalisé?
◼ Créer un fichier .py et y implémenter les objets partagés
from math import cos
def f2(v):
return cos(v)
def imageVect(f,X):
Y=[]
for i in range(0,len(X)):
Y.append(f(X[i]))
return Y
40
Comment créer un module personnalisé?
◼ Invoquer le module crée dans le programme principale ou
dans d’autres fonctions
#Programme principal
from monModule import *
X=[1, 5, 7,4] Enregistré sous le
Y1=imageVect(f1,X) nom monProg.py
Y2=imageVect(f2,X)
print(Y1)
print(Y2)
41