Python コードを整形

書き換えるのは空白だけです。インデントを組み直し、長い行は折り返せますが、文字列・コメント・演算子は 1 バイトも変わりません。レイアウト専用のフォーマッターであり、linter ではないため、構文の検証や修復は行いません。

ブラウザ内でローカルに実行
コピー

ブラウザで Python コードを整形する方法

Python のスニペットを貼り付けると、インデントを組み直し、空行の方針と任意の行折り返しを適用した同じプログラムが返ります。書き換えるのはトークン間の空白だけです。文字列、コメント、f-string の中かっこは 1 バイトも変えずにコピーされるため、出力は入力と同じ構文木に解析されます。

フォーマッターはこのブラウザタブだけで動作し、入力は送信されません。レイアウト専用のフォーマッターであり、linter ではありません。Python の検証・コンパイル・修復は行わず、エラーを報告することもないため、壊れたスニペットは整形されて返るだけで、直りはしません。

  1. 入力欄に Python コードを貼り付け、Python Code Formatting を押すか Ctrl/⌘+Enter を押します。実行のたびに前の結果は置き換わります。
  2. インデント (タブ、または 2・3・4・8 スペース)、残す空行の数、長い行を 80 文字か 120 文字で折り返すかを選びます。
  3. Copy で結果を取得し、Clear で次のスニペットのために両方の欄を空にします。
  4. 折り返しは文字列とコメントの外側の空白でのみ行われます。かっこの内側では改行が暗黙の継続になり、外側ではバックスラッシュが付きます。行をそのままにしたいときは No wrapping を選びます。

フォーマッターが変えるもの — 変わらないもの

書き換えるもの、コピーするもの

書き換えるのはトークン間の空白だけです。行頭のインデントは選択した単位に組み直し、行末の空白と余分な空行は削除し、長い行は折り返せます。それ以外は 1 バイトずつコピーします。シングルクォートとダブルクォートの文字列、raw・bytes・f-string (入れ子の引用符を含む中かっこ)、三重引用符の文字列と内部インデントを持つ docstring、コメント、そして **、//、:=、-> や呼び出し・アンパックで使う * と ** などの演算子です。

結果を確かめる簡単な方法は、出力が入力と同じトークンを同じ順序で含み、空白だけが変わっていることです。エディタで Black、Ruff、autopep8 もかけている場合、このページはその工程を置き換えません。スニペットを読むためのもので、ビルド手順ではありません。

インデント・空行・折り返し

入力のインデントが 1 段深くなるごとに、選んだ幅の 1 単位へと組み直します。タブでも 2・3・4・8 スペースでも同じブロック構造になり、混在したファイルは選択した単位に統一されます。未完了の文が続く行 — かっこの内側やバックスラッシュの後 — は、属している文からの相対的なずれを保ちます。

空行の設定は空行の連続を制限します。すべて削除、最大 1 行か 2 行を保持 (既定は 2 行で、トップレベルの定義の前後に置く一般的な空行数です)、またはすべて保持から選べます。折り返しは貪欲で、文字列とコメントの外側の空白でのみ切るため、トークンが分割されることはありません。長い文字列や名前を分割できない場合は、行は切り詰められず長いまま残ります。

できないこと

linter でもスタイル修正ツールでもインタープリターでもありません。実行はせず、名前の変更、import の並べ替え、引用符の変換は行わず、コロンの欠落や閉じていないかっこも報告しません。書き手が分割した行は、インデント以外はそのまま残します。

プログラムを解析しないため、入力が不正であることを伝えることはできません。たとえばタブとスペースの混在は、報告せずに統一します。有効かどうかを確認したいときは、結果を python -m py_compile やエディタのチェックにかけてください。

最近使ったツール: