Fonction à un paramètre

Denis Dréano
PROG2-01

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ètre
→ Exemple 1 — carré de taille réglable
from 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.

→ Exemple 2 — triangle rectangle isocèle
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)).

→ Exemple 3 — escalier
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
    ...