#
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__` は通常の状況では `True` であり、最適化がリクエストされた場合（コマンドラインオプション -O）は `False` です。現状のコード生成器は、コンパイル時に最適化が要求されて いると assert 文に対するコードを全く出力しません。 実行に失敗した式のソースコードをエラーメッセージ内に入れる必要は ありません; メッセージはスタックトレース内で表示されます。

`__debug__` への代入は不正な操作です。組み込み変数の値は、 インタプリタが開始するときに決定されます。