Pythonのpass文の意味と使い方
Pythonのpass
文は何もしない文であり、文法上なにかを書く必要があるが何も実行することがないときに使う。
pass文の意味
公式ドキュメントにもあるように、pass
文は何もしない文。
pass はヌル操作 (null operation) です — pass が実行されても、何も起きません。 pass は、構文法的には文が必要だが、コードとしては何も実行したくない場合のプレースホルダとして有用です。
7. 単純文 (simple statement) - pass文 — Python 3.11.3 ドキュメント
Pythonでは関数定義のdef
文や条件分岐のif
文などでは中身を省略できない。なにかを記述する必要があるが、何も実行する必要がない(実行させたくない)場合にpass
文を使う。
pass文とcontinue文の違い
for
やwhile
のループで使われるcontinue
文はそれ以降の処理を行わずに次のステップに進む。したがって、continue
文のあとに記述された処理は実行されない。
for i in range(3):
print(i)
if i == 1:
continue
print('CONTINUE')
# 0
# 1
# 2
一方、pass
文は何もしないのでpass
文のあとに記述された処理が続けて実行される。
for i in range(3):
print(i)
if i == 1:
pass
print('PASS')
# 0
# 1
# PASS
# 2
空の関数やクラスを定義
関数やクラスの定義だけ先にしておいて実装を後回しにしたい場合などに、空の関数やクラスを定義したいことがある。
def
文の中に何も書かないとエラーになる。
# def empty_func():
# SyntaxError: unexpected EOF while parsing
pass
文を書いておけば何もしない空の関数を定義できる。
def empty_func():
pass
クラスの定義でも同じ。
# class EmptyClass():
# SyntaxError: unexpected EOF while parsing
class EmptyClass():
pass
スタイルガイドPEP8では非推奨(E701)だが、一行だけの場合はコロン:
のあとで改行せずにそのまま書いても文法上は問題ない。
- PEP 8 - Other Recommendations – Style Guide for Python Code | peps.python.org
- Error codes — pycodestyle 2.10.0 documentation
def empty_func_one_line(): pass
class EmptyClassOneLine(): pass
空のファイルを作成
ファイルを新規作成するにはwith
と書き込みモードw
のopen()
を使う。
通常はwrite()
メソッドなどでファイルの内容を書き込むが、pass
文を使うことで空のファイルを作成できる。
with open('temp/empty.txt', 'w'):
pass
上述のように一行で書くことも可能。
with open('temp/empty.txt', 'w'): pass
pathlibモジュールのtouch()
で空ファイルを作成することも可能。
条件分岐で何もしないことを明示
条件分岐のif ... elif ... else ...
の各ブロックも中身を省略することができない。
実装を後回しにしたい場合や、何もしないことを明示したほうがコードの意図が分かりやすくなる場合などにpass
文を使う。
a = 3
if a % 2 == 0:
print('Even')
else:
pass
例外処理で何もしない(例外を無視)
コードを実行したときにエラー(例外)が発生するとその時点でエラーメッセージが出力されて処理が終了する。
def divide(a, b):
print(a / b)
# divide(1, 0)
# ZeroDivisionError: division by zero
try
文を使うと例外を捕捉してそれに応じた処理を行うことが可能になる。例外を補足すると処理は終了せずに継続する。
def divide_exception(a, b):
try:
print(a / b)
except ZeroDivisionError as e:
print('ZeroDivisionError: ', e)
divide_exception(1, 0)
# ZeroDivisionError: division by zero
例外を捕捉した上で特に何も処理を行わない場合はpass
文を使う。例外が発生しても何もせずに処理を継続できる。
def divide_exception_pass(a, b):
try:
print(a / b)
except ZeroDivisionError as e:
pass
divide_exception_pass(1, 0)
例外処理についての詳細は以下の記事を参照。