Fonctions - À vous
Définition d'une fonction
def prix(nbre_adultes, nbre_enfants): # Remarque 1
resultat = 37 * nbre_adultes + 28 * nbre_enfants
return resultat # Remarque 2
prix(3, 2) # Remarque 3
-
Remarque 1 : Une fonction commence par le mot clef \(\hspace{2em}\) , suivie du \(\hspace{5em}\) de la fonction, puis entre parenthèse, les \(\hspace{5em}\) de la fonction.
-
Remarque 2 :
return
signifie \(\hspace{5em}\) , c'est cette ligne qui indique ce que va \(\hspace{10em}\) la fonction. Ici elle \(\hspace{5em}\) resultat, donc elle \(\hspace{5em}\) la valeur de la variable resultat -
Remarque 3 : Cette ligne de code ne fait pas partie de la fonction (Elle n'est pas dans le bloc indenté). Les lignes de codes qui ne sont pas dans une fonction font partie de ce qu'on appelle le programme principal.
Une fois qu'une fonction est définie, il est possible de l'appeler (l'utiliser) dans le programme principal, mais aussi dans une autre fonction.
Utiliser le résultat renvoyé par une fonction
Toutefois, l'appel ci-dessus ne fait qu'appeler la fonction, qui renvoie le résultat. Ceci ne sera pas utile si nous ne conservons pas ce résultat (afin de pouvoir l'utiliser dans la suite du programme). Pour cela nous allons en général affecter ce résultat à une variable :
Si on veut seulement afficher le résultat, on peut directement afficher ainsi :
Arguments de la fonction
Quand on « appelle » prix(3, 2)
:
• 3 est automatiquement \(\hspace{5em}\) au 1er \(\hspace{5em}\) : la variable nbre_adultes
• 2 est automatiquement \(\hspace{5em}\) au second \(\hspace{5em}\) : la variable nbre_enfants
3 et 2 sont les valeurs données en arguments.
Remarque 1 :⚓︎
Une fonction sans paramètres
Certaines fonctions n'ont aucun paramètre. Dans ce cas, on met des parenthèses vides aussi bien dans la définition que dans l'appel de la fonction :
Remarque 2 :⚓︎
Des fonctions qui ne renvoient rien
Certaines fonctions ne renvoient rien.
Exemple :
def ma_fonction(nom) :
print("Votre nom est :",nom)
return None # ou simplement return, ou pas de return du tout ...
ma_fonction()
De telles fonctions sont, dans certains langages, appelées des procédures. En python, on ne fait pas de différence. Une procédure fait quelques chose : ici par exemple, elle sert à afficher (dans la console) un message.
Notez que dans l'appel d'une procédure, on n'affecte pas le résultat à une variable. C'est logique car il n'y a pas de résultat, puisque la fonction ne renvoie rien.
Notion d'espace de noms⚓︎
Définitions
- Les variables définies dans le corps d'une fonction sont appelées ...
- Les variables définies dans le corps du programme (sous-entendu : pas à l'intérieur d'une fonction) sont appelées ...
Règles d'accès aux variables locales et globales
- règle 1 : une variable locale (définie \(\hspace{8em}\) d'une fonction) est \(\hspace{6em}\) hors de cette fonction.
- règle 2 : une variable globale (définie à \(\hspace{8em}\) d'une fonction) est \(\hspace{6em}\) en lecture à l'intérieur d'une fonction.
- règle 3 : une variable globale (définie à \(\hspace{8em}\) d'une fonction) ne peut pas être modifiée à l'intérieur d'une fonction.
Source : Gilles Lassus
Testez vos fonctions
Exemple d'utilisation pour une fonction carre
qui élève au carré:
Si le test est réussi, il ne se passera rien, sinon le code lève une exception AssertionError et affiche le message.
👉 Remarque : souvent nous n'écrirons pas de message explicatif. Nous nous contenterons par exemple de :
Dans ce cas-là, si le test est réussi, il ne se passera rien, sinon le code lève une exception AssertionError et n'affiche pas de message.
Une fonction peut appeler une autre fonction
Toutes nos fonctions (que nous écrivons ou que nous importons) sont définies avant toute exécution du programme. De sorte que, lorsque l'exécution du code commence, elles sont toutes reconnues et utilisables en tout point du code, y compris dans d'autres fonctions.