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