Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonのアサーションとは?仕組みと使い方をコード例で解説

アサーションとは

アサーション(assertion、表明)とは、プログラムのテストが一通り完了した段階で行う「健全性チェック(サニティテスト)」の一種です。開発者が「この箇所のコードは必ずこうあるはずだ」と想定する条件を明示的に記述し、その前提が実行時に崩れていないかを確認するために使われます。

アサーションの動作は「raise-if文」に似ています。より正確に言えば「raise-if-not文」であり、指定された式が評価され、その結果が False になった場合に例外が送出されます。Pythonでは、assert 文を使用してアサーションを実行します。

実際の開発では、関数の冒頭にアサーションを配置して引数(入力値)が妥当であることをチェックしたり、関数呼び出しの直後に戻り値(出力)が期待どおりであることを検証したりするのが一般的です。

基本構文

assert 式, メッセージ

式が True であれば何も起こらず処理が続行され、False の場合は AssertionError が発生します。メッセージは省略可能ですが、付けておくとデバッグ時にエラーの原因を特定しやすくなります。

assert文の使用例

次の例では、変数 x と y が等しいため条件 x < y が成り立たず、AssertionError が発生します。

x, y = 8, 8
assert x < y, 'xとyは等しい'

出力

Traceback (most recent call last):
  File "assertionerror1.py", line 9, in <module>
    assert x < y, 'xとyは等しい'
AssertionError: xとyは等しい

assert文を使わない同等のコード

同じ動作を assert 文なしで記述すると、以下のようになります。if文で条件を判定し、条件が満たされない場合に自分で例外を発生させている点がポイントです。

x, y = 8, 8
if not x < y:
    raise AssertionError('xとyは等しい')

出力

Traceback (most recent call last):
  File "assertionerror1.py", line 7, in <module>
    raise AssertionError('xとyは等しい')
AssertionError: xとyは等しい

補足:アサーションを無効化する方法

Pythonのアサーションは、インタプリタを最適化モード(-O オプション付き)で起動すると無効化されます。本番環境でパフォーマンスへの影響を避けたい場合に活用できます。ただし、アサーションはあくまでデバッグを支援するための機能であり、入力値のバリデーションや正式なエラーハンドリングの代わりとして使うべきではない点には注意しましょう。

  1. トップレベルドメイン(TLD)とは?種類と役割をわかりやすく解説

    ドメイン名を入力する際、必ずドットの後ろに「.com」「.net」「.org」のような文字列を続ける必要があります。この数文字こそが、入力したアドレスを正しい目的地へ導くために不可欠な要素であり、「トップレベルドメイン(TLD)」と呼ばれています。TLDは常にドメイン名の末尾に配置されますが、果たしてそれほど重要なのでしょうか?実は、この数文字を読むだけで、そのサイトにどんな情報が掲載されているのかをある程度判断できるのです。逆に、TLDを正しく入力しなければ、意図しないサイトにアクセスしたり、どこにもたどり着けなかったりする可能性もあります。トップレベルドメイン(TLD)の基本トップレベルド

  2. Windows Sysinternalsとは?概要から使い方まで徹底解説

    自分のWindowsパソコンを完全にコントロールできたら素晴らしいと思ったことはありませんか?ほぼすべてのWindowsプロセスやアプリケーションの内部を覗き見できるだけでなく、アプリがアクセスしているファイルやレジストリエントリをリアルタイムで確認できるのは、実に魅力的な機能です。 Sysinternalsは、最も信頼性が高く強力なWindowsシステム管理ツールキットのひとつです。そのほとんどのユーティリティはシンプルなEXEファイルなので、USBフラッシュドライブに入れておけば、持ち運び可能なシステム管理ツールとしていつでも活用できます。 Windows Sysinternalsとは?