Pythonのインデントとコロン(:)の基本
音声
目次
コロン(:)の役割(ブロック開始の合図)
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)
SyntaxError:if x > 0:のように、条件や宣言の末尾に:が必要です。IndentationError:インデントが揃っていない、またはタブとスペースが混在していると発生します。
よくあるミスは、タブとスペースの混在でインデントが崩れ、IndentationError になることです(見た目が揃っているように見えても、内部的にはズレている場合があります)。
VSCodeでの対策(スペース4・自動フォーマット)
VSCodeでは、インデント周りを最初に固定しておくと事故が減ります。
- スペース4で統一することをおすすめします(例:
editor.insertSpaces: true、editor.tabSize: 4) - 保存時フォーマットを有効にすると整形の揺れを減らせます(例:
editor.formatOnSave: true) - Python拡張を入れてblackなどのフォーマッタを設定すると、インデントや空白が自動で整います。
- ※blackはPythonコードをルールに沿って読みやすい形に整形する「フォーマッタ」です。使うには事前に pip install black などでインストールが必要です(ここでは“自動整形の例”として紹介します)。
使い分けの基準としては、プロジェクト内で「スペース4・タブ不使用・保存時フォーマット」を標準にするかどうかを先に決め、全員の設定と既存ファイルをその基準に合わせて統一します。
注意(ここだけ)
- 注意:インデント修正で「タブ→スペース置換」や一括整形を行うと、意図しない行まで変わることがあります。作業前にファイルをコピーしてバックアップを取り、差分を見ながら反映してください。
要約
コロン(:)はブロック開始の合図で、次の行をインデントしてブロックを作ります。
Pythonのインデントは見た目ではなく構造そのものなので、ブロック内は同じ幅で揃えます。
if / for / defは行末に:を付け、次行をスペース4で字下げするのが基本です。よく出るエラーは
SyntaxError(:忘れ)とIndentationError(インデント不整合)です。VSCodeはスペース4設定と自動フォーマットで、インデント起因のミスを予防できます。