[解決!Python]pass文で何もしない文を記述するには解決!Python

Pythonには「何もしない」処理を行うpass文がある。その使いどころとちょっとした注意点を紹介する。

» 2021年10月05日 05時00分 公開
[かわさきしんじDeep Insider編集部]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

「解決!Python」のインデックス

連載目次

# 何もしない関数の定義
def myfunc():
    pass

x = myfunc()
print(x)  # None

# メソッドを何も持たないクラスの定義
class MyClass:
    pass

mc = MyClass()
print(mc.__class__.__name__)  # MyClass

# if文の節で特定の条件では何もしないことを明記
for num in range(3):
    if num % 2# odd
        print(f'{num}: odd')
    else:
        pass  # 偶数では何もしないことを明記

# 例外発生時に何もしない
while True:
    num = input('input a integer: ')
    try:
        num = int(num)
    except ValueError:
        pass
    except:
        print('something goes wrong')
    else:
        break

print(num)


pass文とは

 Pythonにはpass文という何もしない文が用意されている。そのドキュメントでは「構文法的には文が必要だが、コードとしては何も実行したくない場合のプレースホルダとして有用」とある。「構文法的には文が必要」な場面とは多くの場合、複合文のことだ。複合文の記述時に「実際にどんなコードにするかは後回しにしよう」「ここでは何もしないことを明記しよう」などの理由で何もしない文が必要になったときにpass文を使用する。

 例えば次のような使いどころが考えられる(全てが上で述べたように複合文であることに注意)。

  • 何もしない関数の定義
  • メソッドを何も持たないクラスの定義
  • if文の節で特定の条件では何もしないことを明記
  • 例外捕捉時に何もしないことを明記

 以下に例を示す。

何もしない関数の定義

 関数を定義だけしておいて、実装は後から考えようというときにpass文を使える。

def myfunc():
    pass

x = myfunc()
print(x)  # None


 この時点では、myfunc関数は何もしない関数であり、その戻り値はNoneである(=戻り値はない)。後からちゃんと役立つコードを記述する必要がある。

 なお、同様な関数をラムダ式で定義するなら「lambda : None」となる。

def call_func(f):
    result = f()
    print(result)

call_func(lambda : None# None
call_func(myfunc)  # None


メソッドを何も持たないクラスの定義

 何もしない(メソッドを何も持たない)クラスは次のようになる。

class MyClass:
    pass

mc = MyClass()
print(mc.__class__.__name__)  # MyClass


 何かの機能や処理を試すコードを書いていて、ユーザー定義のクラスが取りあえず必要になったときや、関数と同じくクラスの実装は後回しにしたいときなどに、このようなクラスを定義できる(後者の場合はもちろん、後からちゃんとした実装が必要になる)。

if文の節で特定の条件では何もしないことを明記

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。