Python-Formatierungstool
Was ist Python-Formatierung?
Der Python-Formatter ordnet Python-Code mit konsistenter Einrückung, Zeilenumbrüchen und übersichtlicher Struktur. Gerade in Python ist Einrückung Teil der Syntax, deshalb kann schlecht kopierter oder gemischter Code nicht nur unleserlich, sondern auch fehleranfällig sein. Das Werkzeug hilft bei Skripten, Notebook-Auszügen, generiertem Code, Lernbeispielen, Reviews und kleinen Refactorings, indem Funktionen, Klassen, Imports, Listen, Dictionaries und verschachtelte Ausdrücke klarer erscheinen. Formatierung behebt jedoch keine Logikfehler, Typfehler, fehlende Abhängigkeiten oder falsche Laufzeitumgebung. In echten Projekten sollte das Ergebnis mit Black, Ruff, isort oder den Teamregeln abgestimmt werden. Besonders bei produktiven Daten oder Codebasen sollte das Ergebnis anschließend mit Parser, Tests oder Projektregeln geprüft werden.
Anleitung
Anleitung
- Fügen Sie Python-Code im linken Eingabefeld ein oder geben Sie ihn ein
- Wählen Sie die Einrückungstiefe (2 Leerzeichen, 4 Leerzeichen oder Tabulator)
- Klicken Sie auf „Format", um den Code zu verschönern, oder „Minify", um ihn zu komprimieren
- Die Ergebnisse erscheinen rechts (mit Syntaxhervorhebung)
- Klicken Sie auf „Kopieren", um in die Zwischenablage zu kopieren
Optionsbeschreibung
Python-Tipps
- Python ist einrückungsempfindlich – prüfen Sie formatierte Kontrollblöcke, bevor Sie das Ergebnis in ein Projekt kopieren.
- Die Formatierung führt keine Typüberprüfungen, Imports oder Tests aus. Verwenden Sie Ihre gewohnten Python-Tools für die Validierung von Verhalten und Abhängigkeiten.
Anwendungsfälle
Technisches Prinzip
Python ist eine der wenigen Mainstream-Sprachen, die Einrückung statt geschweifter Klammern verwenden, um Codeblöcke zu definieren. Aufeinanderfolgende Anweisungen mit gleicher Einrückung gehören zum selben Block; ein Leerzeichen mehr oder weniger ändert die Semantik. Dieses Design lässt die visuelle Struktur des Codes mit seiner Logik übereinstimmen, erfordert aber vom Formatter, die logischen Ebenen präzise zu identifizieren. Der Formatter scannt den Code zunächst mit dem tokenize-Modul oder einem eigenen Lexer und behandelt die führenden Leerzeichen jeder Zeile als Einrückungsinformation. Anweisungen innerhalb von Klammern (rund, eckig oder geschweift) können über mehrere Zeilen gehen; in diesem Fall wird die Einrückung durch die Klammer Tiefe bestimmt statt durch die führenden Leerzeichen. Leerzeichen innerhalb von Zeichenkettenliteralen (dreifach-quotiert, einfach-quotiert) dürfen nicht verändert werden, da sich sonst der Zeichenkettenwert ändert. PEP 8 ist Pythons offizieller Stilguide und spezifiziert 4-Leerzeichen-Einrückung, eine maximale Zeilenlänge von 79 Zeichen, Leerzeichen um Operatoren, gruppierte Imports und Namenskonventionen Black ist ein führendes Beispiel der Formatter-Schule ohne Konfiguration: Er erzwingt doppelt-quotierte Zeichenketten, nachgestellte Kommas und eine 88-Zeichen-Zeilenlänge mit strengen und nicht konfigurierbaren Regeln. yapf ist näher am Google-Stil und konfigurierbar.
- Einrückungssemantik: Python verwendet führende Leerzeichen, um Codeblöcke zu bestimmen; gleiche Einrückung bedeutet gleichen Block, eine Änderung der Einrückung wechselt den Gültigkeitsbereich
- PEP-8-Regeln: 4-Leerzeichen-Einrückung, Zeilenbreite von 79 Zeichen, Leerzeichen um Operatoren, CapWords für Klassennamen, snake_case für Funktionsnamen
- Klammer-Zeilenumbrüche: Anweisungen innerhalb von Klammern (rund, eckig, geschweift) können umgebrochen werden, und die Einrückung wird durch die Klammer Tiefe bestimmt statt durch die führenden Leerzeichen
- Zeichenketten-Grenzen: Leerzeichen innerhalb von dreifach-quotierten Zeichenketten und Docstrings dürfen nicht geändert werden, da sonst der literal-Inhalt beschädigt wird
- Black-Stil: Keine Konfiguration, nicht anpassbar, erzwingt doppelte Anführungszeichen, nachgestellte Kommas, 88 Zeichen pro Zeile, identisch im gesamten Projekt
- Typannotationen: Eingeführt in PEP 484; der Formatter erhält die korrekte Zeichensetzung um -> Rückgabetypen und Parameter : type-Annotationen bei
Beispiele
Funktionsdefinitionen formatieren
Eingabe: def add(a,b):
return a+b
def subtract(a,b):
return a-b
Ausgabe:
def add(a, b):
return a + b
def subtract(a, b):
return a - bList Comprehensions formatieren
Eingabe: result=[x*x for x in range(10) if x%2==0]
result2={k:v for k,v in items if v>0}
Ausgabe:
result = [x * x for x in range(10) if x % 2 == 0]
result2 = {k: v for k, v in items if v > 0}Eine Klassendefinition formatieren
Eingabe: class User:
def __init__(self,name,email):
self.name=name
self.email=email
def __repr__(self):
return f"User({self.name})"
Ausgabe:
class User:
def __init__(self, name, email):
self.name = name
self.email = email
def __repr__(self):
return f"User({self.name})"FAQ
Welchen Python-Stil verwendet er?
Die meisten Builds folgen standardmäßig PEP 8, häufig über Black: 88-Zeichen-Zeilenbreite, doppelte Anführungszeichen für Strings, keine abschließenden Semikolons. Black ist meinungsstark – es entfernt die meisten Konfigurationsoptionen, um einen einheitlichen Stil im gesamten Projekt zu gewährleisten. autopep8 und yapf bieten mehr Optionen, falls du Flexibilität brauchst.
Spielt die Einrückung für den Formatter eine Rolle?
Ja – in Python definiert die Einrückung die Blockstruktur. Der Formatter respektiert bestehende Blockgrenzen; bei gemischten Tabs/Leerzeichen oder falschen Einrückungstiefen scheitert das Parsen, bevor die Formatierung läuft.
Korrigiert er die Import-Reihenfolge?
Black, autopep8 und yapf behandeln nur Whitespace. Zum Sortieren und Gruppieren von Imports nutze isort (oder ruff --fix). Manche Seiten kombinieren beides; lies in der Konfiguration nach, was tatsächlich angewandt wird.
Werden Type Hints unterstützt?
Ja, von modernen Parsern. Typannotationen an Funktionssignaturen, Variablen und Klassenattributen (PEP 526, 484, 612) werden korrekt formatiert. Ganz neue Syntax (PEP 695 generische Syntax in 3.12+) braucht einen aktuellen Parser; ältere Builds können stolpern.
Wird mein Code hochgeladen?
Nein. Die Formatierung läuft in deinem Browser über eine JavaScript-Implementierung des Python-AST. Eingefügter Code wird nicht übertragen.
Stimmt das Ergebnis mit black in meiner CI überein?
Nahe dran, aber nicht immer identisch. Verschiedene Black-Versionen formatieren leicht unterschiedlich (Black aktualisiert seine Regeln regelmäßig). Für CI-Konsistenz nutze lokal und in der CI dieselbe Black-Version; betrachte diese Seite als schnellen visuellen Check.
Warum werden lange Zeilen umgebrochen?
PEP 8 und Black streben ≤88 Zeichen pro Zeile an. Lange Ausdrücke, Funktionsaufrufe mit vielen Argumenten und verkettete Methodenaufrufe werden für die Lesbarkeit auf mehrere Zeilen verteilt. Passe die Zeilenbreite-Option an, wenn dein Team 100 oder 120 verwendet.