Fonction à un paramètre
Fonction à un paramètre
Objectifs cantonaux : O1.6.
Cours complet sur la plateforme Runestone de Cédric Donner : Fonction à un paramètre.
Rappel du problème rencontré jusqu’ici : pour dessiner des carrés de tailles différentes, il fallait définir une fonction par taille (carre100(), carre200(), …), en recopiant à chaque fois presque le même code.
! Le problème à résoudre
def carre100():
for _ in range(4):
forward(100)
right(90)
def carre200():
for _ in range(4):
forward(200)
right(90)Deux fonctions presque identiques, qui ne diffèrent que par une seule valeur. Un paramètre permet de fusionner ces deux fonctions en une seule, valable pour n’importe quelle taille.
▷ Définition — Paramètre
Un paramètre est une valeur indiquée entre parenthèses lors de l’appel d’une fonction, qui permet d’influencer son exécution. À l’intérieur du corps de la fonction, le paramètre s’utilise comme n’importe quelle valeur nommée.
Syntaxe
◈ Syntaxe — Fonction à un paramètre
def nom_de_la_fonction(parametre):
# le paramètre est utilisable dans tout le corps de la fonction
...
nom_de_la_fonction(valeur) # la valeur est transmise au paramètrefrom gturtle import *
def carre(taille):
for _ in range(4):
forward(taille)
right(90)
carre(100)
carre(50)Une seule fonction remplace désormais carre100(), carre200(), etc. — à chaque appel, on choisit la taille voulue.
from gturtle import *
from math import sqrt
def triangle_isocele_rect(cathete):
right(45)
forward(cathete)
right(90)
forward(cathete)
right(135)
forward(cathete * sqrt(2))
triangle_isocele_rect(150)Le paramètre cathete peut être réutilisé plusieurs fois dans le corps de la fonction, y compris dans un calcul (cathete * sqrt(2)).
from gturtle import *
def escalier(nombre_marches):
for _ in range(nombre_marches):
forward(240 / nombre_marches)
right(90)
forward(300 / nombre_marches)
left(90)
escalier(15)Ici, le paramètre nombre_marches sert aussi à calculer la taille de chaque marche (240 / nombre_marches), pour que l’escalier garde toujours la même hauteur et largeur totale, quel que soit le nombre de marches choisi.
Appeler une fonction sans fournir le paramètre
! Erreur fréquente
carre()TypeError: carre() missing 1 required positional argument: 'taille'
Si une fonction attend un paramètre, il est obligatoire de fournir une valeur lors de l’appel — sinon Python refuse d’exécuter la fonction et signale l’erreur.
Nommer les paramètres
Les mêmes règles que pour les noms de fonctions s’appliquent aux noms de paramètres (lettres, chiffres, underscore uniquement, pas d’espace ni d’accent). En plus de ces règles obligatoires, choisissez toujours un nom descriptif, qui indique clairement le rôle du paramètre :
def carre(taille): # clair : "taille" décrit ce que représente la valeur
...
def carre(x): # fonctionne, mais x ne dit rien sur son rôle
...