Assert 文 は、プログラム内にデバッグ用アサーション (debugging assertion) を仕掛けるための便利な方法です:
assert_stmt | ::= | "assert" expression ["," expression] |
単純な形式 "assert expression" は、
if __debug__: if not expression: raise AssertionError
と等価です。拡張形式 "assert expression1, expression2" は、
if __debug__: if not expression1: raise AssertionError, expression2
と等価です。
上記の等価関係は、 __debug__
と
AssertionError が、同名の組み込み
変数を参照しているという前提の上に成り立っています。
現在の実装では、組み込み変数 __debug__
は通常は 1 であり、
インタプリタに (コマンドラインオプション -O で) 最適化を要求すると
0 になります。現状のコード生成器は、コンパイル時に最適化が要求されて
いると assert 文に対するコードを全く出力しません。
実行に失敗した式のソースコードをエラーメッセージ内に入れる必要は
ありません; メッセージはスタックトレース内で表示されます。
__debug__
への代入は不正な操作です。組み込み変数の値は、
インタプリタが開始するときに決定されます。
ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。