Valeur par défaut d'un paramètre de fonction

Valeur par défaut d'un paramètre d'une fonction

On peut donner une valeur par défaut à certains paramètres d'une fonction. Un appel à cette fonction ne nécessitera d'arguments que pour les paramètres n'ayant pas de valeur par défaut.

Exemple.

Je n'arrive pas à retenir la table du 7. Je me suis donc écrit une petite fonction me la rappelant. Mais parfois, c'est la table du 8 qui me fait défaut. La fonction doit pouvoir me servir aussi pour le 8... Mais comme c'est plus souvent le 7, j'aimerais éviter de l'écrire !


def table(coef, base = 7) :
	print(' {}*{} = {} '.format(coef, base, coef*base) )
	print('Il serait quand même temps que tu apprennes ça.')
	
	
	
table(8)
table(9)

table(8,8)
table(9,8)

ce qui donne :

8*7=56 
Il serait quand même temps que tu apprennes ça.
 9*7 = 63 
Il serait quand même temps que tu apprennes ça.
 8*8 = 64 
Il serait quand même temps que tu apprennes ça.
 9*8 = 72 
Il serait quand même temps que tu apprennes ça.

Le paramètre base a une valeur par défaut (qui est 7). Lorsqu'on appelle la fonction sans préciser de valeur pour le second paramètre, la fonction s'exécute avec cette valeur par défaut.
Mais on peut également appeler la fonction en donnant explicitement une valeur à ce second paramètre. C'est ce qui est fait dans les deux derniers appels dans l'exemple ci-dessus.

En nommant les paramètres

En utilisant explicitement le nom des paramètres et en leur donnant à tous une valeur par défaut, l'ordre de ces paramètres n'a plus d'importance.

Exemple.

Nous utilisons ici le module turtle pour illustrer.

Observez les différences entre les deux appels de la fonction : les paramètres ne sont pas nécessairement dans l'ordre déclaré dans l'entête de la fonction et certains paramètres ne sont pas renseignés et seront donc utilisés avec la valeur déclarée dans l'entête de la fonction. Faîtes d'autres essais.


from turtle import *


def carre(cote = 40, sens = 'trigo', couleur = 'black', epaisseur = 2, depart = (0,0) ) :
    penup() # on lève le crayon pour ne pas tracer
    setposition(depart) # la tortue se place au point depart
    pencolor(couleur) # on fixe la couleur du crayon
    pensize(epaisseur) # on fixe l'épaisseur du crayon
    if sens == 'trigo' : 
        angle = 90 
    else :
        angle = 270  # 3*90
    
    pendown() # on abaisse le crayon pour tracer
    for _ in range(4) :
        forward(cote) # on avance de la longueur cote (l'unité est le pixel) dans l'orientation donnée par la tortue
        left(angle) # la tortue tourne sur sa gauche de angle degrés.
    penup()
   
   
 
# on donne à la tortue une forme de tortue (par défaut la forme est celle d'un triangle) :  
shape("turtle")
# premier appel : 
carre(cote = 30, couleur = 'red')
# second appel : 
carre( depart = (0,-5), sens = 'pendule', epaisseur =  5, couleur = 'green')
# instruction permettant de garder la fenêtre ouverte et
# de la fermer en cliquant sur cette fenêtre :
exitonclick() 

ce qui donne :
deux carrés