Python の AssertionError とは何ですか?
アサーション エラーは、モジュールの実行前に満たさなければならない基準または条件を宣言するために使用されるコード ブロックをプログラマが記述または作成するときに発生するプログラミング コンセプトです。他の Python エラーと同様に、アサーションが真であると宣言されたときに指定された条件が満たされている場合、制御はコードの次の行に移されます。一方、false の場合、エラーまたは例外が発生し、プログラムが停止します。 assert ステートメントは、言語に依存しないため、特定の構文を使用してさまざまなプログラミング言語で使用できます。これは、Exception クラスのサブクラスまたはインスタンスです。 Python AssertionError の構文は次のとおりです。
構文: アサート条件、error_message(オプション)
例
入力として人の年齢を入力します。年齢が 0 未満の場合、コンソールはアサーション エラーを発生させます。
では、0 未満の年齢を入力するとどうなるでしょうか。
この方法を使用してコードをデバッグする方が簡単なので、プログラムのエラーを見つけてバグを修正するのが簡単になります。
Python での AssertionError の仕組み
Python 言語には assert ステートメントが含まれており、論理アサーションを使用して簡単なエラー メッセージ出力を生成するために使用できます。アサーション ステートメントが失敗すると、 「例外」 AssertionError が発生します。 Python では、例外クラスは BaseException クラスから派生しています。 AssertionError クラスの基本クラスでもある BaseException クラスは、Exception クラスの派生元です。 assert ステートメントが使用されるときはいつでも、失敗に対処するための適切な例外処理コードが常に存在する必要があります。 Python のデフォルトの例外ハンドラは、プログラマ作成のエラー メッセージを出力しますが、エラー メッセージなしでエラーを処理または解決することもできます。
Python での AssertionError の実装
次に、Python での AssertionError の例をいくつか示します。
例
この例では、円の面積を見つけるプログラムで AssertionError を表示する Python プログラムを作成します。
半径「r」の値は、円の面積を見つけるために作成された前のプログラムの関数に入力として渡されます。次に assert ステートメントを使用して、指定された値または半径 'r' がゼロ未満かどうかを判断します。負の値が指定された場合は、例外が発生します。円の面積は、関数に指定された半径「r」の値に基づいて返されます。最初に、r の値を 3 として関数が実行されます。次に、値 2.5 で関数が実行されます。 「r」に負の値、つまり「-1」を使用すると、AssertionError が発生します。
アサーション エラーの発生を表示する別の例を試してみましょう。
例
この例では、プログラムは分母の値がゼロでないかどうかを判断します。
前のプログラムでは、アサーション エラーのエラー メッセージが表示されます。 2 つの変数 (a と b) を作成し、整数値で変数を指定します。次に、2 番目の変数、つまり b が assert ステートメントを使用してテストされ、0 に等しくないかどうかが確認されます。それ以外の場合は、エラー メッセージが出力されます。そうでない場合は、最初の数値を 2 番目の値で割った結果が表示されます。前の画像では、プログラムの出力が表示されています。
AssertionErrorの応用
アサーション エラーのその他の有益な用途には、次のようなものがあります。
- パラメータ値の評価を支援するアサーション
- アサーションは、入力タイプとその値が有効かどうかを監視するのに役立ちます
- さらに、アサーションは、別のコード開発者がインターフェイスを誤用しているかどうかを特定するのに役立ちます
- アサーションは、プログラムの出力を継続的に監視するのに役立ちます
Python でアサート エラーを回避する方法
- Python プログラムで -O フラグを使用すると、すべてのアサーション ステートメントを無効にすることができます。アサーション ステートメントを無効にすると、アサーション ステートメントの後に続くステートメントは実行されないことに注意してください。
- 環境変数は、アサーション ステートメントをオフにするフラグを設定することもできます。この状況では、環境を使用または継承するすべてのプロセスとアプリケーションが影響を受けます。
- Python でアサーション エラーを防ぐ最も簡単な方法は、手動で処理することです。プログラムの制御フローが assert ステートメントにアクセスしないように迂回されていることを確認すれば、アサーション エラーが発生する可能性はありません。
AssertionError の処理
アサーション ステートメントに加えて、次のメソッドを使用してアサーション エラーを処理することもできます。
Try-Except ブロックを使用したアサーション エラーの処理
assert ステートメントは、値が等しいかどうかを判断します。これらの整数が等しくないため、try ブロックは AssertionError エラーを発生させます。印刷コマンドは、except ブロックが例外をキャッチした後に実行されます。ここでは、例外ブロックからの print ステートメントの出力が表示されます。 raise キーワードを使用すると、except ブロックでエラーを再発生させて、例外の原因を特定できます。例外が発生すると、キーワード「raise」によってエラーが発生し、プログラムが終了します。既存の例外の記録/追跡を維持または維持するのに役立ちます。
traceback モジュールを使用して AssertionError を処理する
コードにいくつかの assert ステートメントが含まれている場合、traceback モジュールは正確なエラーの原因を特定するのに役立ちます。
traceback モジュールを使用すると、print ステートメントをプレースホルダー {} で記述できます。
さらに、他の変数を定義して、行の位置、ファイルの名前、メソッドの名前、および例外が発生したテキスト/メッセージを保存できます。
トレースバック オブジェクトは「tb」と呼ばれます。 2 つのプレースホルダーを使用します。1 つはテキスト用、もう 1 つは印刷ステートメント内の行の位置用です。
ステートメント「raise」の 3 つのコンポーネント(exc_type、exc_traceback、exc_value)は、sys.exc_info() 関数によって返されます。
print ステートメントを使用して AssertionError を処理する
例外を手動で処理するには、except ブロック内でステートメント「print」を使用できます。
print ステートメントは、ユーザーが入力したエラー メッセージを出力します。この方法では、技術的なエラーはユーザーにとって問題になりません.
エラーの代わりに、短いメッセージが表示されます。
結論
この投稿では、Python での例外の導入について初めて説明しました。 AssertionError、それがどのように機能するか、Python で AssertionError を実装する方法について説明しました。 AssertionError のいくつかの利点と、それらを回避する方法について説明しました。この投稿の最後のセクションでは、Try-Except ブロック、traceback モジュール、および print ステートメントを使用して、Python で AssertionError を処理する方法を見てきました。