Pythonのassert
文は、プログラムが期待する条件が満たされているかをチェックするためのデバッグ支援ツールです。基本的な構文は次のようになります。
assert 条件式, 条件式がfalseになったときに出力するメッセージ
条件式がfalse
の場合、例外AssertionError
が発生します。一方、条件式がtrue
の場合は何も起こらずに次の命令を実行します。
Pythonにはunittest
というテストを行うためのクラスが用意されていますが、unittest
を使用するよりもassert
文を使用する方が簡単にテストを行うことができます。
assert
文を使うことで、プログラムが想定外の動作をした場合にすぐにエラーを出力してプログラムを終了させることができます。
assert文の使い方
assert
文の基本的な使い方を以下に示します。
text1 = "何も起こらない"
text2 = "エラー"
text3 = "何も起こらない"
assert text1 == text3 # 何も起こらない
assert text1 == text2 # AssertionErrorが発生
この例では、assert
文がtext1 == text3
(True
)を評価すると何も起こらず、次にtext1 == text2
(False
)を評価するとAssertionError
が発生し、プログラムが終了します。
また、assert
文では条件式の後にカンマを付けてエラーメッセージを記述することができます。
text1 = "何も起こらない"
text2 = "エラー"
assert text1 == text2, 'text1 is not equal to text2' # AssertionError: text1 is not equal to text2
このようにassert
文を使用することで、プログラム中で想定と異なる振る舞いをしている場合に、すぐに気づくことができます。
assert文の無効化
assert
文を無効にするには、Pythonの起動時にコマンドラインオプションで-O
または-OO
を指定します。
$ python -Oc 'assert False' # 何も起こらない
$ python -c 'assert False' # AssertionErrorが発生
assert
文はPythonの組み込み定数__debug__
がTrue
のときに有効で、-O
や-OO
を指定すると__debug__
がFalse
になり、assert
文が無効になります。
以上、Pythonのassert
文についての基本的な情報を提供しました。この情報がPythonのデバッグやテストに役立つことを願っています。.