OUJOOD.COM
Définir une fonction
En Python, on définit une fonction avec le mot-clé def, suivi du nom de la fonction et de parenthèses. Tout le code indenté en dessous constitue le corps de la fonction. La définition seule n'exécute rien : il faut ensuite appeler la fonction pour que son code s'exécute.
# Définition de la fonction def ma_fonction(): print("Bonjour depuis cette fonction") # Appel de la fonction ma_fonction()
La structure est toujours la même : def + nom + parenthèses + deux-points, puis le corps indenté. Les parenthèses sont vides si la fonction n'a besoin d'aucune information pour travailler.
Les arguments
On passe des informations à une fonction via ses arguments, listés entre parenthèses lors de l'appel. Dans la définition, ces emplacements s'appellent des paramètres. La distinction est simple : le paramètre est le nom dans la définition, l'argument est la valeur passée à l'appel.
# La fonction attend un paramètre : nom def ma_fonction(nom): print("Bonjour " + nom) # On appelle la fonction avec différents arguments ma_fonction("Emile") ma_fonction("Sara") ma_fonction("tout le monde")
Par défaut, une fonction doit être appelée avec exactement le nombre d'arguments déclarés. Trop ou pas assez provoque une erreur.
# Fonction qui attend 2 arguments def ma_fonction(nom, prenom): return "Bonjour " + prenom + " " + nom # Appel correct avec 2 arguments salutation = ma_fonction("Dupont", "Emile") print(salutation) # Appel incorrect avec 1 seul argument → provoque une erreur TypeError # ma_fonction("Dupont")
Arguments arbitraires : *args
Quand on ne sait pas combien d'arguments seront passés, on préfixe le paramètre avec *. La fonction reçoit alors un tuple contenant tous les arguments transmis.
# *voitures reçoit tous les arguments sous forme de tuple def ma_fonction(*voitures): print("La voiture disponible est " + voitures[2]) ma_fonction("rouge", "blanche", "grise") # grise
Arguments par mot-clé
On peut passer des arguments en utilisant la syntaxe clé=valeur. Dans ce cas, l'ordre des arguments lors de l'appel n'a plus d'importance.
# L'ordre des arguments par mot-clé est libre
def ma_fonction(voiture1, voiture2, voiture3):
print("La voiture disponible est " + voiture2)
ma_fonction(voiture3="rouge", voiture2="blanche", voiture1="grise")
Arguments par mot-clé arbitraires : **kwargs
Avec ** devant le paramètre, la fonction reçoit un dictionnaire contenant tous les arguments nommés passés à l'appel. Utile quand le nombre de paramètres nommés est inconnu à l'avance.
# **voitures reçoit tous les arguments nommés sous forme de dictionnaire
def ma_fonction(**voitures):
print("La voiture disponible est " + voitures["voiture3"])
ma_fonction(voiture3="rouge", voiture2="blanche", voiture1="grise")
Valeur par défaut d'un paramètre
On peut définir une valeur par défaut pour un paramètre. Si l'argument correspondant n'est pas passé lors de l'appel, la valeur par défaut est utilisée.
# "noire" est la valeur par défaut si aucun argument n'est passé def ma_fonction(voiture="noire"): print("La voiture disponible est " + voiture) ma_fonction("rouge") # rouge ma_fonction("blanche") # blanche ma_fonction() # noire (valeur par défaut)
Passer une liste comme argument
On peut passer n'importe quel type de données à une fonction : chaîne, entier, liste, dictionnaire, ensemble. La fonction le reçoit tel quel et peut le parcourir normalement.
def ma_fonction(voitures):
for voiture in voitures:
print("La voiture disponible est " + voiture)
voitures = ["rouge", "blanche", "grise"]
ma_fonction(voitures)
Valeur de retour avec return
L'instruction return termine la fonction et renvoie une valeur à l'endroit où elle a été appelée. Sans return, une fonction retourne implicitement None.
# La fonction retourne le produit de a et b def ma_fonction(a, b): return a * b print(ma_fonction(2, 3)) # 6 print(ma_fonction(5, 10)) # 50
L'instruction pass
Le corps d'une fonction ne peut pas être vide. Si on veut définir une fonction sans contenu pour l'instant (structure en cours de développement), on utilise pass comme ligne de remplissage.
# pass évite l'erreur SyntaxError sur une fonction vide
def mafonction():
pass
Introduction à la récursion
Une fonction peut s'appeler elle-même : c'est ce qu'on appelle la récursion. Chaque appel traite une version réduite du problème jusqu'à atteindre un cas de base qui arrête les appels. Il faut toujours prévoir cette condition d'arrêt, sinon la fonction tourne indéfiniment.
def tri_recursion(k):
if k > 0:
result = k + tri_recursion(k - 1) # appel récursif avec k-1
print(result)
else:
result = 0 # cas de base : on arrête quand k vaut 0
return result
print("Résultats de l'exemple de récursion")
tri_recursion(6)
Pour aller plus loin sur ce sujet : cours complet sur les fonctions récursives.
Par carabde | Mis à jour le 24 avril 2026