Lenaick Sorimoutou

Retour

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#

Fonction simple sans paramètres
def dire_bonjour():
print("Bonjour !")
# Appeler la fonction
dire_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 :

Fonction avec un paramètre
def dire_bonjour(nom):
print(f"Bonjour {nom} !")
# Appeler avec différents noms
dire_bonjour("Alice")
dire_bonjour("Bob")

Plusieurs paramètres#

Fonction avec 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 :

Fonction avec return
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#

Calcul de l'aire d'un rectangle
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 :

Paramètres avec valeurs par défaut
def saluer(nom, message="Bonjour"):
print(f"{message} {nom} !")
# Utilisation avec valeur par défaut
saluer("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#

Retour de plusieurs valeurs
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 :

Variables locales
def ma_fonction():
variable_locale = "Je suis locale"
print(variable_locale)
ma_fonction()
# print(variable_locale) # Erreur ! Variable non définie
Attention

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#

Variables globales
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#

Fonction calculatrice
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"
# Utilisation
resultat = calculatrice("+", 10, 5)
print(f"10 + 5 = {resultat}")
resultat = calculatrice("*", 4, 7)
print(f"4 * 7 = {resultat}")

Vérificateur de mot de passe#

Vérificateur de mot de passe robuste
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"
# Test
mot_de_passe = "MonMotDePasse123"
valide, message = verifier_mot_de_passe(mot_de_passe)
print(message)

Générateur de mots de passe#

Générateur de mots de passe aléatoires
import random
import 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 passe
mot_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
  1. Nommez vos fonctions clairement : calculer_moyenne() plutôt que calc()
  2. Une fonction, une tâche : Chaque fonction doit avoir un objectif précis
  3. Documentez vos fonctions avec des commentaires ou docstrings
  4. Évitez les fonctions trop longues (plus de 20-30 lignes)
  5. 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 !