Fonctions Python débutant : valeurs par défaut, paramètres nommés et portée des variables
Maîtrisez def en Python : valeurs par défaut, paramètres nommés et portée des variables avec des exemples simples et sûrs.

- Difficulté
- Facile
Avec def, vous pouvez vite écrire des fonctions plus souples grâce aux valeurs par défaut et aux paramètres nommés. Il faut aussi comprendre la portée des variables : une variable créée dans une fonction n’existe pas automatiquement ailleurs.
Prérequis
Vous devez savoir lancer un script Python et reconnaître une fonction simple avec def et return. Les règles montrées ici suivent la documentation officielle sur les fonctions et la portée des noms Python Docs, Python Docs.
Matériel nécessaire
- Python 3 installé
- Un éditeur de texte ou un IDE
- Un terminal ou l’interpréteur Python
Étapes
Créer une valeur par défaut

Écrivez un paramètre avec une valeur dans la signature. Ce paramètre devient optionnel lors de l’appel.
def saluer(nom, ponctuation="!"): return "Bonjour " + nom + ponctuation print(saluer("Lina")) print(saluer("Lina", "?"))Le premier appel utilise "!". Le second remplace cette valeur.
Appeler avec des paramètres nommés

Indiquez le nom du paramètre dans l’appel pour rendre le code plus lisible. C’est pratique dès qu’une fonction a plusieurs arguments.
def afficher_produit(nom, prix, devise="€"): return nom + " : " + str(prix) + " " + devise print(afficher_produit("Stylo", 2)) print(afficher_produit(nom="Stylo", prix=2, devise="EUR")) print(afficher_produit(prix=2, nom="Stylo"))Quand vous nommez chaque argument, l’ordre devient plus souple.
Mélanger correctement positionnel et nommé
Commencez par les arguments positionnels, puis ajoutez les arguments nommés. Python impose cet ordre.
def reserver(train, heure, classe="2nde"): return train + " à " + heure + " en " + classe print(reserver("TER", "08:30")) print(reserver("TER", "08:30", classe="1re"))Retenez la règle simple : positionnel d’abord, nommé ensuite Python Docs.
Tester la portée locale

Créez une variable dans une fonction, puis essayez de l’utiliser dehors. Vous verrez qu’elle reste locale à cette fonction.
def calculer_total(): total = 10 + 5 return total print(calculer_total()) # print(total) # provoquerait une NameErrorIci, total n’existe pas hors de la fonction Python Docs.
Lire ou modifier une variable globale
Une fonction peut lire une variable définie hors d’elle si aucun nom local ne la masque. Pour la modifier, il faut une instruction explicite.
message = "Bonjour" def lire_message(): return message print(lire_message()) print(message)compteur = 0 def incrementer(): global compteur compteur = compteur + 1 incrementer() print(compteur)Réutiliser les trois règles ensemble
Assemblez maintenant valeur par défaut, appel nommé et variable locale. Ce petit exemple reprend les trois idées dans une seule fonction.
def decrire_utilisateur(nom, age=18, ville="Paris"): phrase = nom + " a " + str(age) + " ans et habite à " + ville return phrase print(decrire_utilisateur("Nora")) print(decrire_utilisateur("Nora", ville="Lyon")) print(decrire_utilisateur(nom="Nora", age=20, ville="Lille"))phrase est locale, et age comme ville sont optionnels.
Erreurs fréquentes & dépannage
L’erreur la plus fréquente est de croire qu’une variable créée dans une fonction reste disponible partout. Une autre consiste à placer un argument nommé avant un argument positionnel.
Évitez aussi d’abuser de global. Dans beaucoup de cas, une fonction qui reçoit des valeurs puis renvoie un résultat avec return est plus claire.
Astuces & pour aller plus loin
Si un appel devient difficile à relire, nommez les arguments les plus importants. Si une même valeur revient souvent, donnez-lui une valeur par défaut raisonnable.
Pour vérifier la portée, testez la variable dans la fonction puis hors de la fonction. Si elle n’existe qu’à l’intérieur, elle est locale.
Questions fréquentes
Quand utiliser une valeur par défaut ?
Quand une même valeur convient dans la plupart des appels. Vous gardez la possibilité de la remplacer si nécessaire.
Les paramètres nommés sont-ils obligatoires ?
Non. Vous pouvez appeler une fonction par position, par nom, ou en mélangeant les deux dans le bon ordre.
Faut-il utiliser global pour partager une variable ?
Pas forcément. Pour débuter, il est souvent plus simple de faire calculer une valeur par la fonction puis de la récupérer avec return.
Conclusion
Retenez trois réflexes : mettez les valeurs par défaut à la fin, utilisez les paramètres nommés pour clarifier les appels, et supposez qu’une variable créée dans une fonction est locale. Si ces bases sont acquises, l’étape suivante utile est d’apprendre *args et **kwargs dans la documentation officielle.