Python – Fonctions

publicité
Python – Fonctions
Une fonction f utilise un ou plusieurs objets x, y, z… appelés arguments de la fonction, pour effectuer un calcul ou un
traitement puis retourne un objet f(x,y,z).
Structuration d’un programme :
Exemple
""" Structure d’un programme """
# Modules
import random as rd
import math
# Fonctions
Définition des fonctions
# Initialisation des variables
x, y = 1,2
# Pgm principal
Appel des fonctions
# Affichage
print( )
Définition et appel d’une fonction
Exemple (fonction mathématique)
Syntaxe Python
def f(x,y):
return x**2+y
Définition de la fonction
Arguments formels
f (x, y) = x **2 + y
Appel de la fonction
Arguments effectifs
# L’indentation délimite la fonction
# Aucun résultat sans return !
# return ≠ print !
f(1,0)
print(f(1,0))
f(1,0) le résultat est 1
(dans le shell interactif)
(dans un fichier-programme)
Exemple
""" Structure d’un programme """
# Modules
import random as rd
import math
# Fonctions
def f(x,y):
""" Retourne x²+y """
return x**2+y
# Docstring = commentaire
Définition de f(x,y)
x et y sont des arguments formels (ils
peuvent prendre n’importe quelle valeur
lors de l’appel de la fonction)
# Initialisation des variables
x, y = 1,2
# Pgm principal
z = f(x,y)
Appel de f avec les arguments x=1 et y=2
# Affichage
print('z = ',
z)
PCSI – IPT G. Monod
Fonctions.docx
1/4
Plusieurs return
Exemple (fonction mathématique)
Appel de la fonction
Arguments effectifs
def f(x):
if x >= 0:
return x # Sortie immédiate
else:
return –x
 x si x ≥ 0
 − x sinon
Définition de la fonction
Arguments formels
Syntaxe Python
f ( x) = 
f(-5)
print(f(-5))
f(-5)
(dans le shell interactif)
(dans un fichier-programme)
return None
Exemple (fonction mathématique)
Appel de la fonction
Arguments effectifs
def maFct(x):
if x >= 0:
return sqrt(x)
else:
return None # Valeur None
 x si x ≥ 0
Définition de la fonction
Arguments formels
Syntaxe Python
f ( x) = 
 rien sinon
f(-5)
print(f(-5))
f(-5)
(dans le shell interactif)
(dans un fichier-programme)
Plusieurs valeurs retournées
Une fonction peut retourner plusieurs valeurs. Le résultat est alors un tuple.
Exemple :
def maFct(x) :
return x**2,x
maFct(2) renvoie le tuple (4,2).
Pour accéder aux valeurs du tuple-résultat :
res = maFct(2)
ou bien
a,b = maFct(2)
a,b = res[0], res[1]
on utilise par maFct(2)[0] ou maFct(2)[1].
Fonction sans argument
Une fonction peut ne posséder aucun argument.
Exemple :
def maFct() :
return []
Argument avec valeurs par défaut
Une fonction peut posséder des arguments ayant une valeur par défaut (placés à la fin des arguments obligatoires).
Exemple :
def maFct(x,y=0) :
return x**2+y
maFct(1) renvoie 1.
maFct(1,2) renvoie 3.
PCSI – IPT G. Monod
Fonctions.docx
2/4
Variables globales et variables locales
Une variable globale est une variable définie dans le corps du programme (a dans l’exemple ci-dessus), elle est disponible dans
tout le programme y compris à l’intérieur des fonctions.
Une variable locale est une variable définie dans une fonction (val dans l’exemple ci-dessus), elle n’existe qu’à l’intérieur de la
fonction (elle n’est pas définie à l’extérieur de la fonction).
Portée des variables
Exemple 1
Définition de la fonction
Arguments formels
Appel de la fonction
Arguments effectifs
f (x) = x **2 + p
Syntaxe Python bonne pratique
def f(x):
global p
# Déclaration variable globale
val = x**2+p
return val
(p = paramètre)
a=1
p=4
f(a)
a = 1 # Transmis à la fonction = argument effectif
p = 4 # Utilisé par la fonction = variable globale
f(a)
Mauvaise pratique :
def f(x):
val = x**2+p
return val
Exemple 2
f (x) = x **2 + p
Définition de la fonction
Arguments formels
Appel de la fonction
Arguments effectifs
# p implicitement globale
Syntaxe Python
def f(x):
p = 0 # Variable locale, p=0 dans la fct
Re-définition locale
val = x**2+p
ou surcharge de p
return val
(p = paramètre)
p=4
f(0)
p = 4 # variable globale : p = 4 dans le programme
f(a)
Conclusion
Existe à l’extérieur des fonctions
Existe à l’intérieur des fonctions
Variable globale définie dans le programme
Oui
Oui sauf si variable locale de même nom
Variable locale définie dans une fonction
Non
Oui
PCSI – IPT G. Monod
Fonctions.docx
3/4
Mauvaises pratiques
Ne pas modifier une variable globale dans une fonction
Mauvaise pratique
Définition
Appel
Bonne pratique
def maFct() :
global y
y = y+2
# return y inutile
def maFct() :
global y
return y+2
y = 0
maFct()
# Modification de y invisible
y = 0
y = maFct()
# Modification de y explicite
Ne pas affecter un argument
Mauvaise pratique
Définition
Bonne pratique
def maFct(x) :
x = 2*x
return x+1
PCSI – IPT G. Monod
def maFct(x) :
y = 2*x
return y+1
Fonctions.docx
4/4
Téléchargement