Pythonのassert文はプログラムの実行時に、特定の箇所で特定の条件が満たされているかどうかをチェックして、満たされていなければ例外を発生させる。その基本的な使い方を紹介する。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
# assert文の基本的な使い方
def myfunc(x):
assert x > 0
return x * 2
print(myfunc(10)) # OK
print(myfunc(-8)) # NG:AssertionError
# 条件が満たされなかったときにメッセージを伝える
def myfunc(x):
assert x > 0, 'x must be a positive number.'
return x * 2
print(myfunc(10)) # OK
print(myfunc(-8)) # NG
Pythonのassert文を使用すると、プログラムの(デバッグ)実行時に特定の箇所で特定の条件が満たされているかを調べられる。
以下に例を示す。
def myfunc(x):
assert x > 0
return x * 2
print(myfunc(10)) # OK
print(myfunc(-8)) # NG:AssertionError
この例では、myfunc関数では何らかの理由によりパラメーターxの値が正数である必要がある。そのことを「assert x > 0」と記述することで示している。
条件が満たされなかったときに、何らかのメッセージを伝えたいのであれば、2つ目の式を記述する。以下はその例だ。
def myfunc(x):
assert x > 0, 'x must be a positive number.'
return x * 2
print(myfunc(10)) # OK
print(myfunc(-8)) # NG
この例は最初の例に条件が満たされなかったときに表示するメッセージを追加したものだ。こうすると、式1の条件が満たされず、AssertionError例外が発生したときに「x must be a positive number.」というメッセージが表示されるようになる。
以下は上記のコードをsample.pyという名前のファイルに保存して実行してみた結果だ。最後に「AssertionError: x must be a positive number.」と出力されているのが分かる。
assert文はPythonの組み込み定数__debug__の値がTrueのときにのみ有効である。__debug__の値はPython処理系の起動時にコマンドラインオプションとして-Oもしくは-OOが指定されたとき以外はTrueとなる。つまり、多くの場合は__debug__の値はTrueとなっている(__debug__への代入は禁止されている)。
Copyright© Digital Advantage Corp. All Rights Reserved.