Pythonの基礎 - pass文

2026年2月1日 (日) 05:40時点におけるWiki (トーク | 投稿記録)による版
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)

概要

pass 文は、何もしない (No Operation) ということを記述することができる。

Pythonでは、ステートメントブロックを指定するためにインデントを利用しており、if文、関数、クラス、ループなどでは必ずインデントされたステートメントを記述する必要がある。
pass 文は、将来的にソースコードを記述するためのプレースホルダとして使用することにより、シンタックスエラーを避けてソースコードを記述することができる。


サンプルコード

 print('Hello!')
 
 i = 1
 if i == 1:
    pass  # 何もしない
 
 print('Bye!')


# 実行例 :

Hello!
Bye!



pass文が必要な理由

Pythonでは、ステートメントブロックを指定するためにインデントを利用している。

例えば、if文では条件式を記述した後、インデントされたステートメントを記述する必要がある。

 if 条件:
    <処理1>
    <処理2>


しかし、ソースコードを記述する場合は、必ずしも上から順に記述するわけではない。

どのような分岐が必要でどのような関数が必要であるか、大まかな流れを記述してからソースコードの詳細を記述する場合がよくあるため、
pass 文を将来的にソースコードを記述するためのプレースホルダとして使用することにより、シンタックスエラーを避けてソースコードを記述することができる。


関数でのpass文の使用

関数を定義する時、実装を後回しにする場合に pass 文を使用できる。

関数定義では、def 文の後に必ずインデントされたステートメントが必要となる。
関数の実装が未完成の状態でも、pass 文を記述することでシンタックスエラーを回避できる。

 def calculate_total(items):
    pass  # 後で実装する
 
 def validate_input(data):
    pass  # 後で実装する
 
 # 関数の骨組みだけ先に定義できる
 print('関数定義完了')


# 実行例 :

関数定義完了



クラスでのpass文の使用

クラスを定義する時、メソッドや属性の実装を後回しにする場合に pass 文を使用できる。

クラス定義やメソッド定義では、インデントされたステートメントが必要となる。
クラスの構造だけ先に設計し、詳細な実装を後で行う場合に便利である。

 class Animal:
    pass  # 後で実装する
 
 class Dog:
    def __init__(self, name):
       pass  # 初期化処理を後で実装
 
    def bark(self):
       pass  # メソッドを後で実装
 
    def run(self):
       pass  # メソッドを後で実装
 
 # クラスのインスタンスは作成できる
 dog = Dog('Pochi')
 print('クラス定義完了')


# 実行例 :

クラス定義完了



ループでのpass文の使用

for文やwhile文などのループ構文でも、pass 文を使用できる。

ループの条件だけ先に記述し、処理内容を後で実装する場合や、特定の条件では何もしない場合に使用する。

 # 特定の要素をスキップする例
 numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
 
 for num in numbers:
    if num % 2 == 0:
       pass  # 偶数の場合は何もしない
    else:
       print(num)


# 実行例 :

1
3
5
7
9


while文でも同様に使用できる。

 count = 0
 while count < 5:
    pass  # ループ処理を後で実装
    count += 1
 
 print('ループ終了')


# 実行例 :

ループ終了



例外処理でのpass文の使用

try-except文での例外処理において、特定の例外を無視する場合に pass 文を使用できる。

エラーが発生しても処理を継続したい場合や、特定の例外は無視して良い場合に便利である。

 import os
 
 # ファイルが存在しない場合でもエラーを無視する
 try:
    os.remove('non_existent_file.txt')
 except FileNotFoundError:
    pass  # ファイルが存在しない場合は何もしない
 
 print('処理継続')


# 実行例 :

処理継続


複数の例外処理を記述する場合の例:

 def divide(a, b):
    try:
       result = a / b
       print(f'結果: {result}')
    except ZeroDivisionError:
       pass  # ゼロ除算は無視
    except TypeError:
       print('型エラーが発生しました')
 
 divide(10, 2)
 divide(10, 0)  # ゼロ除算は無視される
 divide(10, 'a')  # 型エラーは表示される


# 実行例 :

結果: 5.0
型エラーが発生しました



passとEllipsis (...)の比較

Pythonでは、pass 文の他に、省略記号 (Ellipsis) を表す ... も同様にプレースホルダとして使用できる。

pass 文 と ... の主な違いは以下の通りである。

pass文の特徴

  • 何もしないことを明示的に示す。
  • Python 2系から存在する伝統的な記法
  • ステートメントとして使用される。
  • 主に空のブロックを定義する時に使用される。


 def function1():
    pass
 
 class Class1:
    pass


Ellipsis (...)の特徴

  • Python 3系で広く使用される。
  • 式 (expression) として使用できる。
  • 型ヒント (Type Hints) でも使用される。
  • より簡潔な記述が可能。


 def function2():
    ...
 
 class Class2:
    ...
 
 # 型ヒントでの使用例
 from typing import Callable
 
 def process(callback: Callable[..., None]):
    ...


使い分けの推奨

以下の使い分けが一般的である。

  • プレースホルダとしての使用
    どちらでも可
    pass がより明示的、... がより簡潔。
  • 型ヒントでの使用
    ... を使用する。
  • 抽象メソッドの定義
    ... を使用することが多い。
  • Python 2系との互換性が必要
    pass を使用する。


比較例を以下に示す。

 # pass文を使用した場合
 def old_style():
    pass
 
 # Ellipsisを使用した場合
 def new_style():
    ...
 
 # 両方とも同じ動作をする
 old_style()
 new_style()
 print('どちらも正常に動作')


# 実行例 :

どちらも正常に動作