#
2 Assert 文 (assert statement)

Assert 文 は、プログラム内にデバッグ用アサーション (debugging assertion) を仕掛けるための便利な方法です:

  assert_stmt | ::= | "assert" expression ["," expression]

  Download entire grammar as text.

単純な形式 "`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__` への代入は不正な操作です。組み込み変数の値は、 インタプリタが開始するときに決定されます。