Skip to content

Introduction Python riche

Statut
Actif
Responsable
Codex
Mise a jour
Tags
pythoncoursshowcasemdx

Debutant Pratique Vitrine composants Astro Starlight

Python est souvent choisi quand la vitesse d’apprentissage, la lisibilite et l’ecosysteme comptent plus que la performance brute. Le premier objectif est de savoir decomposer un probleme : donnees, fonctions, fichiers, erreurs, tests.

Lisibilite

La syntaxe ressemble a du pseudo-code. Les blocs sont courts, explicites et faciles a relire.

Ecosysteme

Automatisation, data, IA, APIs, tests, CLI et web disposent deja de bibliotheques solides.

Productivite

Peu de ceremonie, feedback rapide, bonne integration avec le terminal et les outils modernes.

Portabilite

Le meme code peut tourner sur macOS, Linux, Windows, serveurs et environnements cloud.

Terminal window
brew install python
python3 --version
python3 -m venv .venv
source .venv/bin/activate
  • Utiliser venv pour l’installation de base.
  • Preferer des fonctions courtes et testables avant les classes complexes.
  • Traiter les erreurs explicitement au lieu de les masquer.
  • Garder ce document comme vitrine de composants MDX et comme introduction Python lisible.
  • Directoryhello-python/
    • Directory.venv/
    • Directorysrc/
      • app.py point d’entree
      • greetings.py logique metier
    • Directorytests/
      • test_greetings.py
    • pyproject.toml
    • README.md
Statut
Actif
Responsable
Apprenant
Mise a jour

Cette structure separe le code applicatif, les tests et la configuration du projet. Elle reste simple tout en evitant le dossier fourre-tout.

src/app.py
from greetings import build_message
def main() -> None:
name = "Ada"
print(build_message(name))
if __name__ == "__main__":
main()
src/greetings.py
def build_message(name: str) -> str:
cleaned_name = name.strip() or "inconnu"
return f"Bonjour, {cleaned_name}."
TypeExempleUsage typique
str"Python"Texte, identifiants, messages
int42Compteurs, index, quantites
float3.14Mesures, ratios, calculs
boolTrueConditions, flags
list[1, 2, 3]Collections ordonnees modifiables
dict{"name": "Ada"}Donnees cle-valeur
tuple(10, 20)Paires ou groupes immuables
set{1, 2, 3}Unicite, appartenance rapide
score = 87
if score >= 90:
level = "excellent"
elif score >= 70:
level = "solide"
else:
level = "a renforcer"
print(level)

Journal des decisions

  1. Preferer des conditions courtes

    Une condition courte se relit vite et limite les effets de bord caches.

    Validee
  2. Extraire une fonction quand le bloc grossit

    Un nom de fonction explique souvent mieux une intention qu un commentaire.

    Proposee
users = ["Ada", "Grace", "Linus"]
for user in users:
print(f"Bonjour {user}")

Une fonction doit faire une chose claire, recevoir ses entrees en parametres et retourner un resultat previsible.

def calculate_total(prices: list[float], tax_rate: float = 0.2) -> float:
subtotal = sum(prices)
return subtotal * (1 + tax_rate)
total = calculate_total([10.0, 15.5, 4.5])
# A eviter
def add_item(item: str, items: list[str] = []) -> list[str]:
items.append(item)
return items
# Preferer
def add_item(item: str, items: list[str] | None = None) -> list[str]:
result = [] if items is None else list(items)
result.append(item)
return result
from dataclasses import dataclass
@dataclass
class Task:
title: str
done: bool = False
def mark_done(self) -> None:
self.done = True
task = Task("Ecrire le document Python")
task.mark_done()

Choisir une forme de code

Dataclass

Possible
Avantage
Structure des donnees nommees avec peu de code.
Limite
Ne doit pas devenir un fourre-tout de logique.

Classe complexe

Rejetee
Avantage
Permet de modeliser un domaine riche.
Limite
Trop couteuse pour un script simple ou un premier exercice.
def parse_quantity(raw_value: str) -> int:
try:
quantity = int(raw_value)
except ValueError as error:
raise ValueError("La quantite doit etre un entier") from error
if quantity < 0:
raise ValueError("La quantite doit etre positive")
return quantity
from pathlib import Path
path = Path("notes.txt")
path.write_text("Bonjour Python\n", encoding="utf-8")
content = path.read_text(encoding="utf-8")
print(content)

Module standard

pathlib

API moderne pour manipuler les chemins de fichiers avec des objets `Path`.

  1. Cree un fichier tasks.py.
  2. Ajoute une fonction normalize_task(title: str) -> str.
  3. Supprime les espaces inutiles avec .strip().
  4. Leve une erreur si le titre est vide.
  5. Ecris deux tests : un cas valide et un cas invalide.
tasks.py
def normalize_task(title: str) -> str:
normalized = title.strip()
if not normalized:
raise ValueError("Le titre ne peut pas etre vide")
return normalized
test_tasks.py
import pytest
from tasks import normalize_task
def test_normalize_task_removes_spaces() -> None:
assert normalize_task(" Lire ") == "Lire"
def test_normalize_task_rejects_empty_title() -> None:
with pytest.raises(ValueError):
normalize_task(" ")

Chronologie

  1. Installer Python et lancer un scriptTermine

    Version, environnement virtuel, premier print.

  2. Ecrire fonctions et testsEn cours

    Parametres, retours, assertions, erreurs attendues.

  3. Structurer un mini-projetA venir

    Modules, fichiers, README, dependances.

Prochaines actions

  1. Installer Python et verifier la version

    Apprenant

    Termine
  2. Creer un environnement virtuel par projet

    Apprenant

    En cours
  3. Ajouter deux tests avec pytest

    Apprenant

    A faire
  4. Eviter les installations globales non documentees

    Apprenant

    Bloque
BesoinPython natifBibliotheque courante
Automatiser des fichierspathlib, csv, jsonclick, rich
Appeler une APIurllibrequests, httpx
Testerunittestpytest
Datacsv, statisticspandas, polars
Webhttp.serverFastAPI, Django

Retour aux ressources Python

Tutoriel officiel

Cette page combine composants natifs Starlight et composants documentaires locaux.

Sources principales

  1. Documentation Python

    Reference officielle du langage, de la bibliotheque standard et des guides.

  2. Python Packaging User Guide

    Reference pratique pour les environnements, paquets et projets Python.

  3. Astro Starlight Components

    Reference pour les composants Starlight utilises dans cette page MDX.