Python

【Python】assert文の使い方

この記事では、Pythonのassert文を使ってデバッグする方法を解説します。Pythonには簡単にデバッグするためのassertという文が用意されています。バグを特定する際に便利なので重宝されています。また、デバッグして欲しくない時には、ソースコード内に記述されているすべてのassert文を無視することもできます。それでは、assert文の使い方を詳しく見ていきましょう!

assert文の使い方

assert文は、assertキーワードと条件式を組み合わせて使います。指定した条件式がFalseの場合、AssertionErrorが送出され、プログラムが終了します。

assert 条件式

エラーメッセージを指定することでAssertionErrorが送出された際のエラーメッセージを指定できます。

assert 条件式, エラーメッセージ

条件式がTrueだった場合は、特に何もしません。

サンプル

以下のコードでは、受け取った値の型を調べて、int型以外ならエラーを発生させます。

main.py

num = '1'

assert isinstance(num, int), 'int型ではありません'

実行結果

Traceback (most recent call last):
  File "main.py", line 3, in 
    assert isinstance(num, int), 'int型ではありません'
AssertionError: int型ではありません

assert文を無視する

assert文は、組み込み定数__debug__Trueの時に実行されるようになっており、以下のようなコードと等価です。

# エラーメッセージを指定しない場合
if __debug__:
    if not 条件式: raise AssertionError

# エラーメッセージを指定する場合
if __debug__:
    if not 条件式: raise AssertionError(エラーメッセージ)

つまりは__debug__Falseにすることで、ソースコード内に定義されている全てのassert文を無視することができます。

__debug__をFalseにするには、Pythonコマンドでコードを実行する際に、コマンドラインオプション-O、または-OOを付けて実行します。

main.py

print('start')

assert False, '処理されれば確実にエラーを発生させる'

print('end')

コマンドラインから実行

$ python -O main.py
start
end

これで定義しているすべてのassert文を無視することができます。

__debug__は再代入することができません。代入しようとするとSyntaxErrorが発生するので注意してください。

__debug__ = False

実行結果

  File "/Users/user/Desktop/Python/test.py", line 1
    __debug__ = False
    ^
SyntaxError: cannot assign to __debug__

まとめ

この記事では、Pythonのassert文の使い方を解説しました。

assert文を使うことで、簡単にデバッグを行うことができました。定義したassert文はすべて無視することができるので単純な

それでは今回の内容はここまでです。ではまたどこかで〜( ・∀・)ノ

最短3か月でエンジニア転職『DMM WEBCAMP COMMIT』