Pythonのインデントとコロン(:)の基本

投稿日:2026-01-11

音声

※ AI音声で読み上げます

目次

  1. コロン(:)の役割(ブロック開始の合図)
  2. インデントの役割(Pythonは字下げでまとまりを表す)
  3. 正しい書き方の例(if / for / def)
  4. よくあるエラー(SyntaxError: ':'忘れ/IndentationError)
  5. VSCodeでの対策(スペース4・自動フォーマット)
  6. 注意(ここだけ)
  7. 要約

コロン(:)の役割(ブロック開始の合図)

Pythonでは if / for / while / def / class / try などの行末にコロン(:)を書きます。これは「ここから下にブロック(ひとかたまりの処理)が続く」という開始の合図です。

コロン自体が処理を生むのではなく、「次の行をインデントしてブロックとして書く」ことまでがセットになります。

インデントの役割(Pythonは字下げでまとまりを表す)

Pythonは {} の代わりにインデント(字下げ)でブロックを表します。そのため、インデントは見た目の整形ではなく、プログラムの構造そのものです。

一般的にはPEP 8に従い「スペース4つ」で統一します。また、同じブロック内の行は必ず同じ幅で揃えます(混在するとエラーや意図しない挙動の原因になります)。

正しい書き方の例(if / for / def)

最小コードです。

def filter_long_names(names):
    """長さが4文字以上の名前だけ残す(空文字は除外)"""
    result = []
    for n in names:
        if n and len(n) >= 4:
            result.append(n)
    return result

def greet_all(names):
    """受け取った名前一覧に順に挨拶する"""
    for n in names:
        print(f"Hello, {n}")

if __name__ == "__main__":
    names = ["Amy", "Taro", "Jiro", "Kazuo"]

    long_names = filter_long_names(names)  # フィルタ結果を使い回す
    print("filtered ->", long_names)
    greet_all(long_names)

貼り付け場所は sample.py に上から貼り付けて保存します。

実行方法はターミナルで python sample.py を実行するか、VSCodeの実行ボタンを使います。

確認方法です。

# 確認用:関数の戻り値を assert で検証
# assert は条件を入力してTrue(何も起きない)か確かめる文です。条件がFalseだとそこで止まり、AssertionError が出ます。
# このブロックは if __name__ == "__main__": の中に入れてください
assert filter_long_names(["Ken", "Yoko", "Anna"]) == ["Yoko", "Anna"]
assert filter_long_names(["", "Kazuo"]) == ["Kazuo"]  # 空文字は除外される想定
print("テスト成功")

上の assert が通ると「テスト成功」が表示されます。

よくあるエラー(SyntaxError: ':'忘れ/IndentationError)

コロンを忘れると、代表的には次のようなエラーになります(環境により表示文言は多少変わります)。

# 避けたい例(コロン忘れ)
if x > 0
    print(x)
  • SyntaxErrorif x > 0: のように、条件や宣言の末尾に : が必要です。
  • IndentationError:インデントが揃っていない、またはタブとスペースが混在していると発生します。

よくあるミスは、タブとスペースの混在でインデントが崩れ、IndentationError になることです(見た目が揃っているように見えても、内部的にはズレている場合があります)。

VSCodeでの対策(スペース4・自動フォーマット)

VSCodeでは、インデント周りを最初に固定しておくと事故が減ります。

  • スペース4で統一することをおすすめします(例:editor.insertSpaces: trueeditor.tabSize: 4
  • 保存時フォーマットを有効にすると整形の揺れを減らせます(例:editor.formatOnSave: true
  • Python拡張を入れてblackなどのフォーマッタを設定すると、インデントや空白が自動で整います。
  • ※blackはPythonコードをルールに沿って読みやすい形に整形する「フォーマッタ」です。使うには事前に pip install black などでインストールが必要です(ここでは“自動整形の例”として紹介します)。

使い分けの基準としては、プロジェクト内で「スペース4・タブ不使用・保存時フォーマット」を標準にするかどうかを先に決め、全員の設定と既存ファイルをその基準に合わせて統一します。

注意(ここだけ)

  • 注意:インデント修正で「タブ→スペース置換」や一括整形を行うと、意図しない行まで変わることがあります。作業前にファイルをコピーしてバックアップを取り、差分を見ながら反映してください。

要約

  1. コロン(:)はブロック開始の合図で、次の行をインデントしてブロックを作ります。

  2. Pythonのインデントは見た目ではなく構造そのものなので、ブロック内は同じ幅で揃えます。

  3. if / for / def は行末に : を付け、次行をスペース4で字下げするのが基本です。

  4. よく出るエラーは SyntaxError:忘れ)と IndentationError(インデント不整合)です。

  5. VSCodeはスペース4設定と自動フォーマットで、インデント起因のミスを予防できます。