「Pythonの基礎 - pass文」の版間の差分

提供: MochiuWiki : SUSE, EC, PCB

📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)

ページの作成:「== 概要 == <code>pass</code>文は、何もしない(No Operation)ということを記述することができる。<br> <br><br> == サンプルコード == <syntax…」
 
編集の要約なし
 
1行目: 1行目:
== 概要 ==
== 概要 ==
<code>pass</code>文は、何もしない(No Operation)ということを記述することができる。<br>
<code>pass</code> 文は、何もしない (No Operation) ということを記述することができる。<br>
<br>
Pythonでは、ステートメントブロックを指定するためにインデントを利用しており、if文、関数、クラス、ループなどでは必ずインデントされたステートメントを記述する必要がある。<br>
<code>pass</code> 文は、将来的にソースコードを記述するためのプレースホルダとして使用することにより、シンタックスエラーを避けてソースコードを記述することができる。<br>
<br><br>
<br><br>


14行目: 17行目:
  </syntaxhighlight>
  </syntaxhighlight>
<br>
<br>
  # 実行例
  # 実行例 :
  Hello!
  Hello!
  Bye!
  Bye!
30行目: 34行目:
<br>
<br>
しかし、ソースコードを記述する場合は、必ずしも上から順に記述するわけではない。<br>
しかし、ソースコードを記述する場合は、必ずしも上から順に記述するわけではない。<br>
<br>
どのような分岐が必要でどのような関数が必要であるか、大まかな流れを記述してからソースコードの詳細を記述する場合がよくあるため、<br>
どのような分岐が必要でどのような関数が必要であるか、大まかな流れを記述してからソースコードの詳細を記述する場合がよくあるため、<br>
<code>pass</code>文を将来的にソースコードを記述するためのプレースホルダとして使用することにより、シンタックエラーを避けてソースコードを記述することができる。<br>
<code>pass</code> 文を将来的にソースコードを記述するためのプレースホルダとして使用することにより、シンタックスエラーを避けてソースコードを記述することができる。<br>
<br><br>
 
== 関数でのpass文の使用 ==
関数を定義する時、実装を後回しにする場合に <code>pass</code> 文を使用できる。<br>
<br>
関数定義では、<code>def</code> 文の後に必ずインデントされたステートメントが必要となる。<br>
関数の実装が未完成の状態でも、<code>pass</code> 文を記述することでシンタックスエラーを回避できる。<br>
<syntaxhighlight lang="python">
def calculate_total(items):
    pass  # 後で実装する
def validate_input(data):
    pass  # 後で実装する
# 関数の骨組みだけ先に定義できる
print('関数定義完了')
</syntaxhighlight>
<br>
# 実行例 :
関数定義完了
<br><br>
 
== クラスでのpass文の使用 ==
クラスを定義する時、メソッドや属性の実装を後回しにする場合に <code>pass</code> 文を使用できる。<br>
<br>
クラス定義やメソッド定義では、インデントされたステートメントが必要となる。<br>
クラスの構造だけ先に設計し、詳細な実装を後で行う場合に便利である。<br>
<syntaxhighlight lang="python">
class Animal:
    pass  # 後で実装する
class Dog:
    def __init__(self, name):
      pass  # 初期化処理を後で実装
    def bark(self):
      pass  # メソッドを後で実装
    def run(self):
      pass  # メソッドを後で実装
# クラスのインスタンスは作成できる
dog = Dog('Pochi')
print('クラス定義完了')
</syntaxhighlight>
<br>
# 実行例 :
クラス定義完了
<br><br>
 
== ループでのpass文の使用 ==
for文やwhile文などのループ構文でも、<code>pass</code> 文を使用できる。<br>
<br>
ループの条件だけ先に記述し、処理内容を後で実装する場合や、特定の条件では何もしない場合に使用する。<br>
<syntaxhighlight lang="python">
# 特定の要素をスキップする例
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
for num in numbers:
    if num % 2 == 0:
      pass  # 偶数の場合は何もしない
    else:
      print(num)
</syntaxhighlight>
<br>
# 実行例 :
1
3
5
7
9
<br>
while文でも同様に使用できる。<br>
<syntaxhighlight lang="python">
count = 0
while count < 5:
    pass  # ループ処理を後で実装
    count += 1
print('ループ終了')
</syntaxhighlight>
<br>
# 実行例 :
ループ終了
<br><br>
 
== 例外処理でのpass文の使用 ==
try-except文での例外処理において、特定の例外を無視する場合に <code>pass</code> 文を使用できる。<br>
<br>
エラーが発生しても処理を継続したい場合や、特定の例外は無視して良い場合に便利である。<br>
<syntaxhighlight lang="python">
import os
# ファイルが存在しない場合でもエラーを無視する
try:
    os.remove('non_existent_file.txt')
except FileNotFoundError:
    pass  # ファイルが存在しない場合は何もしない
print('処理継続')
</syntaxhighlight>
<br>
# 実行例 :
処理継続
<br>
複数の例外処理を記述する場合の例:<br>
<syntaxhighlight lang="python">
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')  # 型エラーは表示される
</syntaxhighlight>
<br>
# 実行例 :
結果: 5.0
型エラーが発生しました
<br><br>
<br><br>
== passとEllipsis (...)の比較 ==
Pythonでは、<code>pass</code> 文の他に、省略記号 (Ellipsis) を表す <code>...</code> も同様にプレースホルダとして使用できる。<br>
<br>
<code>pass</code> 文 と <code>...</code> の主な違いは以下の通りである。<br>
<br>
==== pass文の特徴 ====
* 何もしないことを明示的に示す。
* Python 2系から存在する伝統的な記法
* ステートメントとして使用される。
* 主に空のブロックを定義する時に使用される。
<br>
<syntaxhighlight lang="python">
def function1():
    pass
class Class1:
    pass
</syntaxhighlight>
<br>
==== Ellipsis (...)の特徴 ====
* Python 3系で広く使用される。
* 式 (expression) として使用できる。
* 型ヒント (Type Hints) でも使用される。
* より簡潔な記述が可能。
<br>
<syntaxhighlight lang="python">
def function2():
    ...
class Class2:
    ...
# 型ヒントでの使用例
from typing import Callable
def process(callback: Callable[..., None]):
    ...
</syntaxhighlight>
<br>
==== 使い分けの推奨 ====
以下の使い分けが一般的である。<br>
<br>
* プレースホルダとしての使用
*: どちらでも可
*: <code>pass</code> がより明示的、<code>...</code> がより簡潔。
* 型ヒントでの使用
*: <code>...</code> を使用する。
* 抽象メソッドの定義
*: <code>...</code> を使用することが多い。
* Python 2系との互換性が必要
*: <code>pass</code> を使用する。
<br>
比較例を以下に示す。<br>
<syntaxhighlight lang="python">
# pass文を使用した場合
def old_style():
    pass
# Ellipsisを使用した場合
def new_style():
    ...
# 両方とも同じ動作をする
old_style()
new_style()
print('どちらも正常に動作')
</syntaxhighlight>
<br>
# 実行例 :
どちらも正常に動作
<br><br>
{{#seo:
|title={{PAGENAME}} : Exploring Electronics and SUSE Linux | MochiuWiki
|keywords=MochiuWiki,Mochiu,Wiki,Mochiu Wiki,Electric Circuit,Electric,pcb,Mathematics,AVR,TI,STMicro,AVR,ATmega,MSP430,STM,Arduino,Xilinx,FPGA,Verilog,HDL,PinePhone,Pine Phone,Raspberry,Raspberry Pi,C,C++,C#,Qt,Qml,MFC,Shell,Bash,Zsh,Fish,SUSE,SLE,Suse Enterprise,Suse Linux,openSUSE,open SUSE,Leap,Linux,uCLnux,電気回路,電子回路,基板,プリント基板,Python,pass,pass文,プレースホルダ,Ellipsis
|description={{PAGENAME}} - 電子回路とSUSE Linuxに関する情報 | This page is {{PAGENAME}} in our wiki about electronic circuits and SUSE Linux
|image=/resources/assets/MochiuLogo_Single_Blue.png
}}


__FORCETOC__
__FORCETOC__
[[カテゴリ:Python]]
[[カテゴリ:Python]]

2026年2月1日 (日) 05:40時点における最新版

概要

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('どちらも正常に動作')


# 実行例 :

どちらも正常に動作