Outil de Formatage Python
Qu'est-ce que le formatage Python?
Le formateur Python réorganise le code Python avec indentation, retours à la ligne et structure lisible. En Python, l’indentation fait partie de la syntaxe; un code mal copié ou mélangé peut donc changer le comportement ou provoquer des erreurs, pas seulement paraître laid. L’outil aide pour scripts, extraits de notebooks, code généré, exemples pédagogiques, revues et petits refactorings, en rendant fonctions, classes, imports, listes, dictionnaires et expressions imbriquées plus faciles à parcourir. Le formatage ne corrige pas bugs logiques, erreurs de types, dépendances manquantes, environnement d’exécution ni mauvais usage d’API. En projet réel, il doit s’aligner sur Black, Ruff, isort ou les règles d’équipe.
Mode d'emploi
Comment l'utiliser
- Collez ou saisissez du code Python dans la zone de saisie de gauche
- Choisissez la taille d'indentation (2 espaces, 4 espaces ou tabulation)
- Cliquez sur « Formater » pour embellir le code, ou « Minifier » pour le compresser
- Consultez le résultat à droite (avec coloration syntaxique)
- Cliquez sur « Copier » pour copier dans le presse-papiers
Description des options
Conseils Python
- Python est sensible à l'indentation : vérifiez les blocs de contrôle formatés avant de recopier le résultat dans votre projet.
- Le formatage n'effectue pas de vérifications de type, d'importations ni de tests. Utilisez vos outils Python habituels pour valider le comportement et les dépendances.
Cas d’utilisation
Principe technique
Python est l'un des rares langages mainstream à utiliser l'indentation plutôt que les accolades pour définir les blocs de code. Les instructions consécutives avec la même indentation appartiennent au même bloc ; un espace de plus ou de moins et la sémantique change. Ce design fait correspondre la structure visuelle du code à sa logique, mais il exige que le formateur identifie les niveaux logiques avec précision. Le formateur scanne d'abord le code avec le module tokenize ou un analyseur lexical personnalisé, traitant l'espace blanc de début de chaque ligne comme information d'indentation. Les instructions entre parenthèses (rondes, carrées ou accolades) peuvent s'étendre sur plusieurs lignes, auquel cas l'indentation est déterminée par la profondeur des parenthèses plutôt que par l'espace blanc de début de ligne. L'espace blanc à l'intérieur des littéraux de chaînes (triple guillemets, guillemets simples) ne doit pas être modifié, sinon la valeur de la chaîne change. PEP 8 est le guide de style officiel de Python, spécifiant une indentation de 4 espaces, une longueur maximale de ligne de 79 caractères, des espaces autour des opérateurs, des imports groupés et des conventions de nommage. Black est l'exemple emblématique de l'école des formateurs sans configuration : il impose les guillemets doubles, les virgules finales et une longueur de ligne de 88 caractères, avec des règles strictes et non configurables. yapf est plus proche du style Google et est configurable.
- Sémantique d'indentation : Python utilise l'espace blanc de début de ligne pour déterminer les blocs de code ; la même indentation signifie le même bloc, un changement d'indentation change la portée
- Règles PEP 8 : indentation de 4 espaces, largeur de ligne de 79 caractères, espaces autour des opérateurs, CapWords pour les noms de classes, snake_case pour les noms de fonctions
- Retours à la ligne entre parenthèses : les instructions entre parenthèses (rondes, carrées, accolades) peuvent être réparties sur plusieurs lignes, et l'indentation est déterminée par la profondeur des parenthèses plutôt que par l'espace blanc de début de ligne
- Délimitation des chaînes : l'espace blanc à l'intérieur des chaînes triple-guillemets et des docstrings ne doit pas être modifié, sinon cela casse le contenu du littéral
- Style Black : aucune configuration, non personnalisable, impose les guillemets doubles, les virgules finales, 88 caractères par ligne, identique sur l'ensemble du projet
- Annotations de type : introduites dans PEP 484 ; le formateur préserve l'espacement correct autour des types de retour -> et des annotations de paramètre : type
Exemples
Formatage de définitions de fonctions
Entrée : def add(a,b):
return a+b
def subtract(a,b):
return a-b
Sortie :
def add(a, b):
return a + b
def subtract(a, b):
return a - bFormatage de compréhensions de listes
Entrée : result=[x*x for x in range(10) if x%2==0]
result2={k:v for k,v in items if v>0}
Sortie :
result = [x * x for x in range(10) if x % 2 == 0]
result2 = {k: v for k, v in items if v > 0}Formatage d'une définition de classe
Entrée : class User:
def __init__(self,name,email):
self.name=name
self.email=email
def __repr__(self):
return f"User({self.name})"
Sortie :
class User:
def __init__(self, name, email):
self.name = name
self.email = email
def __repr__(self):
return f"User({self.name})"FAQ
Quel style Python utilise-t-il ?
La plupart des versions adoptent par défaut les conventions PEP 8, souvent via Black : largeur de ligne de 88 colonnes, chaînes entre guillemets doubles, pas de point-virgules de fin. Black est opiniâtre : il supprime la plupart des options de configuration pour offrir un style cohérent à l'échelle du projet. autopep8 et yapf offrent plus d'options si vous avez besoin de flexibilité.
L'indentation est-elle importante pour le formateur ?
Oui : l'indentation Python définit la structure des blocs. Le formateur respecte les limites de blocs existantes ; si votre entrée mélange tabulations et espaces ou a de mauvais niveaux d'indentation, l'analyse échoue avant le formatage.
Va-t-il corriger l'ordre des imports ?
Black, autopep8 et yapf ne gèrent que les espaces. Pour trier et grouper les imports, utilisez isort (ou ruff --fix). Certaines pages combinent les deux ; lisez la configuration pour savoir ce qui est réellement appliqué.
Les annotations de type sont-elles prises en charge ?
Oui pour les analyseurs modernes. Les annotations de type sur les signatures de fonctions, variables et attributs de classe (PEP 526, 484, 612) se formatent correctement. La syntaxe très récente (syntaxe générique PEP 695 dans 3.12+) nécessite un analyseur récent ; les versions plus anciennes peuvent buter dessus.
Mon code est-il téléversé ?
Non. Le formatage s'exécute dans votre navigateur via une implémentation JavaScript de l'AST Python. Le code collé n'est pas transmis.
Le résultat correspondra-t-il à Black sur mon CI ?
Proche mais pas toujours identique. Différentes versions de Black peuvent formater légèrement différemment (Black met régulièrement à jour ses règles). Pour la cohérence en CI, exécutez la même version de Black en local et en CI ; traitez cette page comme une vérification visuelle rapide.
Pourquoi enveloppe-t-il les longues lignes sur plusieurs lignes ?
PEP 8 et Black visent ≤88 caractères par ligne. Les expressions longues, les appels de fonction avec de nombreux arguments et les appels de méthodes chaînés sont répartis sur plusieurs lignes pour la lisibilité. Ajustez l'option de largeur de ligne si votre équipe utilise 100 ou 120.