Python : Niveau Intermédiaire

Approfondissez vos connaissances et écrivez du code "Pythonic" efficace.

Module 1 : Fonctions Avancées

Args, Kwargs et Lambdas

# *args pour une liste variable d'arguments positionnels
def addition(*nombres):
    return sum(nombres)

# **kwargs pour des arguments par mot-clé
def infos_user(**details):
    for k, v in details.items():
        print(f"{k}: {v}")

infos_user(nom="WinnyKing", role="Admin")

# Lambdas (Fonctions anonymes)
# Utile pour les fonctions courtes comme avec map() ou filter()
carre = lambda x: x**2
nombres = [1, 2, 3, 4]
doubles = list(map(lambda x: x * 2, nombres))
Module 2 : Compréhensions & Expressions Génératrices

Rapidité et Lisibilité

Créez des listes, dictionnaires ou sets en une seule ligne.

nombres = [1, 2, 3, 4, 5, 10]

# List Comprehension
carres_pairs = [x**2 for x in nombres if x % 2 == 0]

# Dict Comprehension
carres_dict = {x: x**2 for x in nombres}

# Generator Expression (Économe en mémoire)
carres_gen = (x**2 for x in nombres)
Module 3 : Gestion des Exceptions Avancée

Robustesse du code

try:
    # Code susceptible de lever une exception
    resultat = 10 / int(input("Diviseur : "))
except ZeroDivisionError:
    print("Erreur : Division par zéro !")
except ValueError:
    print("Erreur : Entrée invalide !")
except Exception as e:
    print(f"Erreur inattendue : {e}")
else:
    print(f"Résultat : {resultat}")
finally:
    print("Exécuté quoi qu'il arrive (nettoyage...)")
Module 4 : Programmation Orientée Objet (POO)

Classes, Encapsulation et Propriétés

Allez au-delà des simples données et créez de véritables objets intelligents.

class CompteBancaire:
    def __init__(self, titulaire, solde_initial):
        self.titulaire = titulaire
        self.__solde = solde_initial # Attribut privé (Name Mangling)

    @property # Getter
    def solde(self):
        return f"{self.__solde} €"

    @solde.setter # Setter
    def solde(self, valeur):
        if valeur >= 0:
            self.__solde = valeur
        else:
            print("Solde ne peut pas être négatif")

    def deposer(self, montant):
        if montant > 0:
            self.__solde += montant

compte = CompteBancaire("WinnyKing", 1000)
compte.deposer(500)
print(compte.solde)
Module 5 : Itérateurs & Générateurs

Gestion efficace de la mémoire

Les générateurs ne chargent pas tout en mémoire d'un coup. Ils utilisent le mot-clé yield.

def compte_a_rebours(n):
    while n > 0:
        yield n
        n -= 1

for val in compte_a_rebours(5):
    print(val)
Module 6 : Modules standards & Fichiers

Manipulation de l'OS et des données

import json
from pathlib import Path

data = {"nom": "WinnyKing", "score": 100}
Path("config.json").write_text(json.dumps(data))
Module 7 : Bases de Données (SQL)

Stocker des données de manière persistante

Python inclut sqlite3 par défaut, parfait pour les petits projets et le développement.

import sqlite3

# Connexion (crée le fichier s'il n'existe pas)
conn = sqlite3.connect("ma_base.db")
cursor = conn.cursor()

# Création de table
cursor.execute("CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY, nom TEXT)")

# Insertion sécurisée (prévention injections SQL)
cursor.execute("INSERT INTO users (nom) VALUES (?)", ("WinnyKing",))
conn.commit()

# Récupération
cursor.execute("SELECT * FROM users")
print(cursor.fetchall())
conn.close()
Niveau Précédent : Débutant Niveau Suivant : Expert