ToolActToolAct

Python フォーマットツール

Python 入力
出力
行数: 1文字数: 0バイト数: 0
行数: 1文字数: 0

Pythonフォーマットとは?

Pythonフォーマットは、整理されていないPythonコードを標準化された読みやすい形式に整えるプロセスです。良いコードフォーマットは可読性を向上し、デバッグを容易にし、エラーを減少します。Pythonはインデントでコードブロックを定義するため、正しいフォーマットが特に重要です。フォーマットには: 一貫したインデント、適切な改行、演算子のスペースが含まれます。圧縮は空白とコメントをすべて削除し、ファイルサイズを大幅に減少します。

使い方

使い方

  1. 左側の入力欄にPythonコードを貼り付けるか入力します
  2. インデントサイズ(スペース2個、スペース4個、Tab)を選択します
  3. 「フォーマット」でコードを整形、「圧縮」でファイルサイズを小さくできます
  4. 右側に結果が表示されます(シンタックスハイライト付き)
  5. 「コピー」をクリックしてクリップボードにコピーします

オプションの説明

インデントサイズスペース2個、スペース4個、Tabから選択できます。PEP 8ではスペース4個が推奨されています
フォーマット適切なインデントと改行でコードを整形します
Minify空白やコメントを削除してファイルサイズを縮小します

Pythonのヒント

  • Pythonはインデントに厳密なので、結果をプロジェクトにコピーする前に、整形後の制御ブロックを必ず確認してください
  • フォーマットでは型チェック、インポート、テストは実行されません。動作や依存関係の検証には、普段お使いのPythonツールをご利用ください

利用シーン

文字列やコメントを壊さずにPythonコードを整えるチャット、Wiki、Issueからコピペしたコードでインデントが不揃いだったり余分な空行が入っていたりする場合にフォーマッターを使います。引用符付き文字列、三重引用符ブロック、コメントを保護した上でインデントを正規化するため、ドキュメント文章やインラインの注釈が意図せず書き換わることはありません。出力はREADMEやStack Overflowの回答にそのまま貼り付けても再フォーマットが走らないレベルのコードスニペットになります。
コード共有前にシンプルな括弧や文字列のミスを検出する出力を生成する前に、対になる括弧・角括弧・波括弧や閉じられていない三重引用符文字列を検証します。完全なPythonインタープリターやBlackの代替ではありませんが、小さなサンプル、レッスン、サポート回答での明らかな構造ミスを検出できます。CIで本格的なリンターと組み合わせれば、フォーマッターでは見えないロジックレベルの問題も拾えます。
可読な出力とコンパクトなワンラインスニペットを切り替えるフォーマット出力はスペース2個、スペース4個、タブから選択でき、短いデモや埋め込み向けにセミコロン区切りのコンパクト形式に圧縮もできます。選択したモードに応じてformatted.pyまたはminified.pyとしてコピー・ダウンロードできます。圧縮形式はシェルのワンライナーや短いメール署名への埋め込みに便利です。
f-stringや三重引用符のdocstringを検証するネストされたf-string、regexサンプル、コードブロックを含む三重引用符docstringをフォーマッターにかけて、波括弧と引用符のバランスが保たれているか確認します。docstring内の予期しないインデントは、ソースの前の方で三重引用符が閉じられていないことを意味することがあります。フォーマッターがパースエラーを報告した場合、一見正しく見えても元のコードを慎重に再確認してください。
Black 88列とPEP 8 79列、autopep8/yapf/blackを比較するこのツールの出力はプロジェクトスタイルではなく設定可能な行幅を使用します。Blackが採用する88列はよりコンパクトな結果になり、autopep8や多くのエディタのデフォルトであるPEP 8の79列はより伝統的です。Blackは設定不可で厳格、yapfはGoogleスタイルで調整可能、autopep8はPEP 8違反のみを修正しコードの再構成はしません。ブラウザ上のこのツールで素早く整えてから、CIでBlackやRuffを走らせてチームのスタイルを維持しましょう。

仕組み

Pythonは、ブレース(中括弧)ではなくインデントを使用してコードブロックを定義する数少ない主流言語の一つです。同じインデントを持つ連続する文は同じブロックに属し、1スペースの違いでセマンティクスが変わります。この設計によりコードの視覚的な構造がロジックと一致しますが、フォーマッターは論理レベルを正確に識別する必要があります。 フォーマッターはまずtokenizeモジュールまたはカスタムレキサーでコードをスキャンし、各行の先頭空白をインデント情報として処理します。括弧(丸括弧、角括弧、波括弧)内の文は複数行にわたることができ、その場合は先頭空白ではなく括弧の深さによってインデントが決定されます。文字列リテラル内(三重引用符、一重引用符)の空白は変更してはなりません。さもないと文字列の値が変わってしまいます。 PEP 8はPythonの公式スタイルガイドで、4スペースインデント、最大行長79文字、演算子前後のスペース、インポートのグループ化、命名規則を規定しています。Blackは設定不要派フォーマッターの代表例で、二重引用符文字列、末尾カンマ、88文字の行長を強制し、厳格で変更不可のルールを持ちます。yapfはGoogleスタイルに近く、設定が可能です。

  • インデントのセマンティクス:Pythonは先頭空白でコードブロックを判断。同じインデントは同じブロックを意味し、インデントの変更でスコープが切り替わる。
  • PEP 8ルール:4スペースインデント、行幅79文字、演算子前後のスペース、クラス名はCapWords、関数名はsnake_case。
  • 括弧内の改行:括弧(丸括弧、角括弧、波括弧)内の文は折り返すことができ、インデントは先頭空白ではなく括弧の深さで決定される。
  • 文字列境界:三重引用符文字列やdocstring内の空白は変更不可。さもないとリテラルの内容が壊れる。
  • Blackスタイル:設定不要、カスタマイズ不可、二重引用符強制、末尾カンマ、1行88文字、プロジェクト全体で同一の出力。
  • 型アノテーション:PEP 484で導入。フォーマッターは `->` リターン型やパラメータ `: type` アノテーション前後の適切なスペースを保持する。

使用例

関数定義のフォーマット

入力: def add(a,b):
  return a+b


def subtract(a,b):
  return a-b
出力:
def add(a, b):
    return a + b


def subtract(a, b):
    return a - b

リスト内包表記のフォーマット

入力: result=[x*x for x in range(10) if x%2==0]
result2={k:v for k,v in items if v>0}
出力:
result = [x * x for x in range(10) if x % 2 == 0]
result2 = {k: v for k, v in items if v > 0}

クラス定義のフォーマット

入力: class User:
  def __init__(self,name,email):
   self.name=name
    self.email=email
  def __repr__(self):
    return f"User({self.name})"
出力:
class User:
    def __init__(self, name, email):
        self.name = name
        self.email = email

    def __repr__(self):
        return f"User({self.name})"

よくある質問

どのPythonスタイルを使用しますか?

ほとんどのビルドはデフォルトでPEP 8の規約を使用し、多くの場合Black経由です。88カラムの行幅、二重引用符の文字列、末尾セミコロンなしです。Blackは独自の見解を持ち、ほとんどの設定オプションを排除して、プロジェクト全体で一貫したスタイルを提供します。柔軟性が必要な場合は、autopep8とyapfにより多くのオプションがあります。

フォーマッタにとってインデントは重要ですか?

はい。Pythonのインデントはブロック構造を定義します。フォーマッタは既存のブロック境界を尊重します。入力にタブ/スペースが混在していたり、インデントレベルが間違っていたりすると、フォーマット実行前に解析が失敗します。

import順序は修正されますか?

Black、autopep8、yapfは空白のみを処理します。importをソートしてグループ化するには、isort(またはruff --fix)を使用してください。一部のページでは両方を組み合わせています。実際に何が適用されているかを知るには設定を読んでください。

型ヒントに対応していますか?

現代的なパーサーでは対応しています。関数シグネチャ、変数、クラス属性の型注釈(PEP 526、484、612)は正しくフォーマットされます。非常に新しい構文(3.12以降のPEP 695ジェネリック構文)には最近のパーサーが必要で、古いビルドはつまずく可能性があります。

コードはアップロードされますか?

いいえ。フォーマットはPython ASTのJavaScript実装を使用してブラウザ内で実行されます。貼り付けたコードは送信されません。

結果はCI上のblackと一致しますか?

近いですが、常に同一とは限りません。Blackのバージョンが異なるとフォーマットがわずかに異なる可能性があります(Blackは定期的にルールを更新します)。CIの一貫性のためには、ローカルとCIで同じBlackバージョンを実行してください。このページは簡単な視覚的チェックとして扱ってください。

長い行が複数行に折り返されるのはなぜですか?

PEP 8とBlackは1行あたり88文字以下を目指します。長い式、多くの引数を持つ関数呼び出し、メソッドのチェーン呼び出しは、可読性のために複数行に分割されます。チームで100または120を使用している場合は、行幅オプションを調整してください。

関連ツール

JavaScript フォーマットツール

オンラインJavaScriptフォーマットツール。コード美化、圧縮、構文チェックをサポート。ワンクリックでJSコードを整理し、コード可読性を向上。

Java フォーマットツール

オンラインJavaフォーマットツール。コード美化、圧縮、構文チェックをサポート。ワンクリックでJavaコードを整理し、コード可読性を向上。

JSON フォーマットツール

オンラインJSONフォーマットツール。シンタックスハイライト、エラー検出、圧縮・美化をサポート。ワンクリックでJSONデータを美化し、フォーマットエラーを素早く特定し、開発効率を向上させます。

YAML フォーマットツール

オンラインYAMLフォーマットツール。構文チェック、自動インデント、フォーマット変換をサポート。設定ファイルを簡単に処理し、構文問題を素早く発見。

Markdown エディタ

オンラインMarkdownエディタ。リアルタイムプレビュー、シンタックスハイライト、HTMLエクスポート。テーブル、コードブロック、フローチャートなど拡張構文対応、ライティング効率向上。

正規表現テストツール

オンライン正規表現テストツール。リアルタイムマッチング、結果をハイライト表示。よく使う正規表現ライブラリ対応、正規表現のデバッグと検証に役立ちます。