7. Fonctions en Python
Apprendre à créer et utiliser des fonctions pour organiser et réutiliser votre code Python
Fonctions en Python#
Dans ce septième épisode de la série “Python pour les débutants”, nous découvrons les fonctions qui permettent d’organiser votre code, de le réutiliser et de le rendre plus modulaire et maintenable.
Qu’est-ce qu’une fonction ?#
Définition
Une fonction est un bloc de code réutilisable qui effectue une tâche spécifique. C’est comme une recette de cuisine que vous pouvez utiliser plusieurs fois avec différents ingrédients.
Créer une fonction simple#
def dire_bonjour(): print("Bonjour !")
# Appeler la fonctiondire_bonjour()Important
En Python, une fonction est définie avec le mot-clé def, suivi du nom de la fonction, de parenthèses (), et d’un deux-points :. Le corps de la fonction doit être indenté.
Fonctions avec paramètres#
Les paramètres permettent de passer des données à votre fonction :
def dire_bonjour(nom): print(f"Bonjour {nom} !")
# Appeler avec différents nomsdire_bonjour("Alice")dire_bonjour("Bob")Plusieurs paramètres#
def calculer_somme(a, b): resultat = a + b print(f"{a} + {b} = {resultat}")
calculer_somme(5, 3)calculer_somme(10, 7)Fonctions avec valeur de retour#
Utilisez return pour renvoyer une valeur :
def calculer_somme(a, b): return a + b
resultat = calculer_somme(5, 3)print(f"Le résultat est : {resultat}")Explication
L’instruction return permet à une fonction de renvoyer une valeur au code appelant. Sans return, la fonction renvoie implicitement None.
Exemple avec calcul d’aire#
def calculer_aire_rectangle(longueur, largeur): return longueur * largeur
aire = calculer_aire_rectangle(5, 3)print(f"L'aire du rectangle est : {aire}")Paramètres par défaut#
Vous pouvez donner des valeurs par défaut aux paramètres :
def saluer(nom, message="Bonjour"): print(f"{message} {nom} !")
# Utilisation avec valeur par défautsaluer("Alice") # Affiche : Bonjour Alice !
# Utilisation avec message personnalisésaluer("Bob", "Salut") # Affiche : Salut Bob !Conseil
Les paramètres avec valeurs par défaut doivent toujours être placés après les paramètres obligatoires dans la définition de la fonction.
Fonctions avec plusieurs valeurs de retour#
def calculer_stats(nombres): somme = sum(nombres) moyenne = somme / len(nombres) maximum = max(nombres) minimum = min(nombres)
return somme, moyenne, maximum, minimum
nombres = [1, 5, 3, 9, 2]somme, moyenne, max_val, min_val = calculer_stats(nombres)
print(f"Somme : {somme}")print(f"Moyenne : {moyenne}")print(f"Maximum : {max_val}")print(f"Minimum : {min_val}")Portée des variables#
Les variables dans une fonction sont locales :
def ma_fonction(): variable_locale = "Je suis locale" print(variable_locale)
ma_fonction()# print(variable_locale) # Erreur ! Variable non définieAttention
Les variables définies à l’intérieur d’une fonction sont locales à cette fonction. Elles n’existent que pendant l’exécution de la fonction et ne sont pas accessibles en dehors.
Variables global#
variable_globale = "Je suis globale"
def ma_fonction(): global variable_globale variable_globale = "Modifiée dans la fonction" print(variable_globale)
ma_fonction()print(variable_globale)Exemples pratiques#
Calculatrice simple#
def calculatrice(operation, a, b): if operation == "+": return a + b elif operation == "-": return a - b elif operation == "*": return a * b elif operation == "/": if b != 0: return a / b else: return "Erreur : Division par zéro" else: return "Opération non supportée"
# Utilisationresultat = calculatrice("+", 10, 5)print(f"10 + 5 = {resultat}")
resultat = calculatrice("*", 4, 7)print(f"4 * 7 = {resultat}")Vérificateur de mot de passe#
def verifier_mot_de_passe(mot_de_passe): if len(mot_de_passe) < 8: return False, "Le mot de passe doit contenir au moins 8 caractères"
if not any(c.isupper() for c in mot_de_passe): return False, "Le mot de passe doit contenir une majuscule"
if not any(c.islower() for c in mot_de_passe): return False, "Le mot de passe doit contenir une minuscule"
if not any(c.isdigit() for c in mot_de_passe): return False, "Le mot de passe doit contenir un chiffre"
return True, "Mot de passe valide"
# Testmot_de_passe = "MonMotDePasse123"valide, message = verifier_mot_de_passe(mot_de_passe)print(message)Générateur de mots de passe#
import randomimport string
def generer_mot_de_passe(longueur=12): caracteres = string.ascii_letters + string.digits + "!@#$%^&*" mot_de_passe = ''.join(random.choice(caracteres) for _ in range(longueur)) return mot_de_passe
# Générer des mots de passemot_de_passe1 = generer_mot_de_passe()mot_de_passe2 = generer_mot_de_passe(16)
print(f"Mot de passe 1 : {mot_de_passe1}")print(f"Mot de passe 2 : {mot_de_passe2}")Bonnes pratiques#
Conseil
- Nommez vos fonctions clairement :
calculer_moyenne()plutôt quecalc() - Une fonction, une tâche : Chaque fonction doit avoir un objectif précis
- Documentez vos fonctions avec des commentaires ou docstrings
- Évitez les fonctions trop longues (plus de 20-30 lignes)
- Utilisez des paramètres par défaut quand c’est approprié
Conclusion#
Les fonctions sont essentielles pour :
- Organiser votre code en blocs logiques
- Réutiliser du code sans le dupliquer
- Faciliter la maintenance et les modifications
- Créer des programmes modulaires
Dans le prochain épisode, nous découvrirons les listes et les dictionnaires pour stocker et manipuler des données !