Pourquoi fonctions en Python ?
Les fonctions en Python sont un outil essentiel pour les développeurs. Elles permettent de structurer le code, d'organiser les tâches et de réutiliser du code existant. En pratique quotidienne, cela signifie que chaque fois qu'un ensemble de instructions est exécuté plusieurs fois, on peut encapsuler ces instructions dans une fonction.
Un cas d'utilisation concret : imaginez un script qui effectue des calculs mathématiques. À la place de répéter les mêmes opérations à chaque fois, on pourrait créer une fonction calculer qui prend en paramètres les nombres et le type d'opération et retourne le résultat.
Prerequis
- Connaissances en base de Python (variables, structures de contrôle, etc.)
- Python installé sur votre système (version recommandée : 3.8+)
Concepts fondamentaux
Définition d'une fonction
Une fonction en Python est définie avec le mot-clé def, suivi du nom de la fonction et de ses paramètres entre parenthèses.
def dire_bonjour(nom):
print(f"Bonjour, {nom}!")
Appel d'une fonction
Pour exécuter le code d'une fonction, on l'appelle en utilisant son nom suivi des paramètres entre parenthèses.
dire_bonjour("Alice")
Retourner une valeur
On peut utiliser le mot-clé return pour retourner une valeur d'une fonction. Cette valeur peut ensuite être utilisée dans l'ensemble du code.
def addition(a, b):
return a + b
resultat = addition(5, 3)
print(resultat) # Affiche : 8
Paramètres par défaut
On peut définir des paramètres avec des valeurs par défaut pour rendre la fonction plus flexible.
def multiplier(a, b=1):
return a * b
print(multiplier(5)) # Affiche : 5
print(multiplier(5, 2)) # Affiche : 10
Fonctions anonymes (lambda)
Les fonctions lambda sont des fonctions anonymes qui peuvent être définies en une seule ligne.
add = lambda x, y: x + y
resultat = add(5, 3)
print(resultat) # Affiche : 8
Mise en pratique : projet fil rouge
Mini-projet : Gestionnaire de tâches simple
- Créer le fichier
main.py
from tasks import list_tasks, add_task, delete_task
def afficher_menu():
print("1. List all tasks")
print("2. Add a new task")
print("3. Delete a task")
print("4. Quit")
if __name__ == "__main__":
while True:
afficher_menu()
choix = input("Enter your choice: ")
if choix == '1':
list_tasks()
elif choix == '2':
description = input("Enter the task description: ")
add_task(description)
elif choix == '3':
index = int(input("Enter the task index to delete: "))
delete_task(index)
elif choix == '4':
break
else:
print("Invalid choice. Please try again.")
- Créer le fichier
tasks.py
tasks = []
def list_tasks():
if not tasks:
print("No tasks found.")
else:
for i, task in enumerate(tasks):
print(f"{i}. {task}")
def add_task(description):
tasks.append(description)
print(f"Task added: {description}")
def delete_task(index):
if 0 <= index < len(tasks):
removed_task = tasks.pop(index)
print(f"Task removed: {removed_task}")
else:
print("Invalid task index.")
- Exécuter le programme
python main.py
Étapes détaillées
- Définir les fonctions : Dans
tasks.py, nous définissons trois fonctions (list_tasks,add_task, etdelete_task) qui gèrent les tâches. - Structure du code : Le fichier
main.pycontient le code principal qui affiche le menu, prend l'entrée de l'utilisateur et appelle les fonctions appropriées. - Exécution : Lorsque nous exécutons
python main.py, le programme s'exécute en boucle jusqu'à ce que l'utilisateur choisisse d'quitter.
Erreurs fréquentes et debugging
1. Indentation
Python dépend de l'indentation pour définir les blocs de code. Une erreur d'indentation peut entraîner un IndentationError.
def ma_fonction():
print("Hello, World!")
##
def ma_fonction():
print("Hello, World!")
2. Retour manquant
Si une fonction est censée retourner une valeur mais ne le fait pas, on obtient un SyntaxError.
def ma_fonction():
return "Bonjour"
resultat = ma_fonction()
##
def ma_fonction():
return "Bonjour"
resultat = ma_fonction()
print(resultat)
3. Erreur de type
Un TypeError peut survenir si on utilise un type incorrect dans une fonction.
def addition(a, b):
return a + b
resultat = addition(5, "3")
##
def addition(a, b):
return a + int(b)
resultat = addition(5, "3")
print(resultat)
Pour aller plus loin
1. Fonctions récursives
En apprenant les fonctions récursives, on peut résoudre des problèmes qui se reproduisent à chaque appel (ex: factoriel, Fibonacci).
2. Fonctions génératrices
Les générateurs permettent de créer des séquences de valeurs à la volée, ce qui peut être très utile pour gérer des données volumineuses.
3. Fonctions décorateurs
Les décorateurs sont une fonction spéciale qui permettent de modifier le comportement d'une autre fonction ou d'une méthode.
Défi pratique
- Créer un simple jeu en Python : Utilisez des fonctions pour structurer votre code et ajoutez une interface utilisateur.
- Développer une application web simple : Utilisez les fonctions dans le backend d'une application web avec Flask ou Django.