Python

📚 DĂ©butant

Fonctions avancées

Arguments variables

# *args pour un nombre variable d'arguments def additionner_tous(*nombres): return sum(nombres) print(additionner_tous(1, 2, 3, 4, 5)) # 15 # **kwargs pour des arguments nommés def afficher_infos(**infos): for cle, valeur in infos.items(): print(f"{cle}: {valeur}") afficher_infos(nom="Alice", age=25, ville="Paris") # Combinaison def fonction_complete(arg1, arg2, *args, **kwargs): print(f"arg1: {arg1}") print(f"arg2: {arg2}") print(f"args: {args}") print(f"kwargs: {kwargs}") fonction_complete(1, 2, 3, 4, nom="Bob", age=30)

Fonctions lambda

# Syntaxe : lambda arguments: expression double = lambda x: x * 2 print(double(5)) # 10 # Avec plusieurs arguments somme = lambda a, b: a + b print(somme(3, 4)) # 7 # Utilisation avec map, filter, sorted nombres = [1, 2, 3, 4, 5] doubles = list(map(lambda x: x * 2, nombres)) pairs = list(filter(lambda x: x % 2 == 0, nombres)) # Trier avec lambda personnes = [("Alice", 25), ("Bob", 30), ("Charlie", 20)] par_age = sorted(personnes, key=lambda p: p[1]) print(par_age)

List Comprehensions

# Syntaxe : [expression for item in iterable if condition] # Liste des carrés carres = [x**2 for x in range(10)] print(carres) # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81] # Avec condition pairs = [x for x in range(20) if x % 2 == 0] # Manipulation de chaßnes mots = ["hello", "world", "python"] majuscules = [mot.upper() for mot in mots] # Nested comprehension matrice = [[i*j for j in range(3)] for i in range(3)] print(matrice) # [[0, 0, 0], [0, 1, 2], [0, 2, 4]] # Dict comprehension nombres = [1, 2, 3, 4, 5] carres_dict = {x: x**2 for x in nombres} print(carres_dict) # {1: 1, 2: 4, 3: 9, 4: 16, 5: 25} # Set comprehension unique = {x % 3 for x in range(10)} print(unique) # {0, 1, 2}

Gestion des fichiers

Écriture dans un fichier

# Écrire dans un fichier with open("exemple.txt", "w") as f: f.write("Ligne 1\n") f.write("Ligne 2\n") f.write("Ligne 3\n") # Ajouter à la fin with open("exemple.txt", "a") as f: f.write("Ligne 4\n") # Écrire plusieurs lignes lignes = ["Premiùre ligne\n", "Deuxiùme ligne\n"] with open("multi.txt", "w") as f: f.writelines(lignes)

Lecture depuis un fichier

# Lire tout le fichier with open("exemple.txt", "r") as f: contenu = f.read() print(contenu) # Lire ligne par ligne with open("exemple.txt", "r") as f: for ligne in f: print(ligne.strip()) # Lire toutes les lignes dans une liste with open("exemple.txt", "r") as f: lignes = f.readlines() print(lignes)
💡 Astuce : Le mot-clĂ© with ferme automatiquement le fichier, mĂȘme en cas d'erreur.

Classes et Objets

class Voiture: # Attribut de classe nombre_roues = 4 # Constructeur def __init__(self, marque, modele, annee): self.marque = marque self.modele = modele self.annee = annee self.vitesse = 0 # Méthode def accelerer(self, increment): self.vitesse += increment print(f"Vitesse: {self.vitesse} km/h") def freiner(self, decrement): self.vitesse -= decrement if self.vitesse < 0: self.vitesse = 0 print(f"Vitesse: {self.vitesse} km/h") # Méthode spéciale pour l'affichage def __str__(self): return f"{self.marque} {self.modele} ({self.annee})" # Utilisation ma_voiture = Voiture("Tesla", "Model 3", 2023) print(ma_voiture) ma_voiture.accelerer(50) ma_voiture.freiner(20)

Héritage

class Animal: def __init__(self, nom): self.nom = nom def parler(self): pass class Chien(Animal): def parler(self): return f"{self.nom} dit Woof!" class Chat(Animal): def parler(self): return f"{self.nom} dit Miaou!" # Utilisation rex = Chien("Rex") felix = Chat("Felix") print(rex.parler()) # Rex dit Woof! print(felix.parler()) # Felix dit Miaou!

Gestion des exceptions

# Try/Except basique try: nombre = int(input("Entrez un nombre: ")) resultat = 10 / nombre print(f"RĂ©sultat: {resultat}") except ValueError: print("Ce n'est pas un nombre valide!") except ZeroDivisionError: print("Division par zĂ©ro impossible!") except Exception as e: print(f"Erreur: {e}") else: print("Tout s'est bien passĂ©!") finally: print("Ce bloc s'exĂ©cute toujours") # Lever une exception def verifier_age(age): if age < 0: raise ValueError("L'Ăąge ne peut pas ĂȘtre nĂ©gatif") if age < 18: raise ValueError("Vous devez ĂȘtre majeur") return True try: verifier_age(15) except ValueError as e: print(f"Erreur: {e}")

Modules et imports

# Importer un module complet import math print(math.sqrt(16)) print(math.pi) # Importer des fonctions spécifiques from math import sqrt, pi print(sqrt(25)) print(pi) # Importer avec alias import datetime as dt maintenant = dt.datetime.now() print(maintenant) # Importer tout (déconseillé) # from math import * # Modules utiles import random print(random.randint(1, 10)) print(random.choice(['a', 'b', 'c'])) import os print(os.getcwd()) # Dossier actuel # os.listdir() # Lister fichiers

Collections avancées

Tuples

# Tuples (immuables) coordonnees = (10, 20) print(coordonnees[0]) # 10 # Unpacking x, y = coordonnees print(f"x={x}, y={y}") # Tuple avec un seul élément single = (42,) # La virgule est importante! # Retour multiple de fonction def get_info(): return "Alice", 25, "Paris" nom, age, ville = get_info()

Sets

# Set (éléments uniques, non ordonnés) nombres = {1, 2, 3, 4, 5} nombres.add(6) nombres.add(3) # Pas de doublon print(nombres) # {1, 2, 3, 4, 5, 6} # Opérations sur les sets a = {1, 2, 3, 4} b = {3, 4, 5, 6} print(a | b) # Union: {1, 2, 3, 4, 5, 6} print(a & b) # Intersection: {3, 4} print(a - b) # Différence: {1, 2} print(a ^ b) # Différence symétrique: {1, 2, 5, 6}

Générateurs et itérateurs

# Générateur simple def compte_jusqua(n): i = 1 while i <= n: yield i i += 1 # Utilisation for nombre in compte_jusqua(5): print(nombre) # Generator expression carres = (x**2 for x in range(10)) print(next(carres)) # 0 print(next(carres)) # 1 # Générateur infini def fibonacci(): a, b = 0, 1 while True: yield a a, b = b, a + b # Utiliser avec islice from itertools import islice fib = fibonacci() premiers_10 = list(islice(fib, 10)) print(premiers_10)

Exercices pratiques

  1. Créez une classe Compte bancaire avec dépÎt, retrait et historique
  2. Écrivez un programme qui lit un fichier CSV et calcule des statistiques
  3. Développez un gestionnaire de tùches avec sauvegarde dans un fichier JSON
  4. Créez un décorateur pour mesurer le temps d'exécution d'une fonction
  5. Implémentez une calculatrice avec gestion d'erreurs complÚte