Pythonには「何もしない」処理を行うpass文がある。その使いどころとちょっとした注意点を紹介する。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
# 何もしない関数の定義
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)
Pythonにはpass文という何もしない文が用意されている。そのドキュメントでは「構文法的には文が必要だが、コードとしては何も実行したくない場合のプレースホルダとして有用」とある。「構文法的には文が必要」な場面とは多くの場合、複合文のことだ。複合文の記述時に「実際にどんなコードにするかは後回しにしよう」「ここでは何もしないことを明記しよう」などの理由で何もしない文が必要になったときにpass文を使用する。
例えば次のような使いどころが考えられる(全てが上で述べたように複合文であることに注意)。
以下に例を示す。
関数を定義だけしておいて、実装は後から考えようというときに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
何かの機能や処理を試すコードを書いていて、ユーザー定義のクラスが取りあえず必要になったときや、関数と同じくクラスの実装は後回しにしたいときなどに、このようなクラスを定義できる(後者の場合はもちろん、後からちゃんとした実装が必要になる)。
Copyright© Digital Advantage Corp. All Rights Reserved.