【Python】assert文の基本|コード付きでわかりやすく解説

※本サイトにはプロモーション・広告が含まれています。

(最終更新月:2023年7月)

✔このような方へ向けて書かれた記事となります

「pythonのassert文は何ができるんだろう?」

「pythonのassert文の書き方を知りたい」

「pythonのassert文の実例を見たい」

✔当記事を通じてお伝えすること

  • pythonのassert文の基本的な使い方
  • pythonのassert文の書き方とその活用方法
  • pythonのassert文の具体的な実例

当記事では、pythonのassert文の基本を把握することから始め、その使い方や活用法について具体例を交えて詳細に説明します。

最後までお読み頂き、pythonのassert文の魅力について理解を深めてください。

筆者プロフィール

筆者プロフィールアイコン

【現職】プロダクトマネージャー

【副業】ブログ(月間20万PV)/YouTube/Web・アプリ制作

「プログラミング × ライティング × 営業」の経験を活かし、30後半からのIT系職へシフト。現在はプロダクトマネージャーとして、さまざまな関係者の間に入り奮闘してます。当サイトでは、実際に手を動かせるWebアプリの開発を通じて、プログラミングはもちろん、IT職に必要な情報を提供していきます。

【当ブログで紹介しているサイト】

当サイトチュートリアルで作成したデモ版日報アプリ

Django × Reactで開発したツール系Webアプリ

✔人に見せても恥ずかしくないコードを書こう

「リーダブルコード」は、わかりやすく良いコードの定義を教えてくれる本です。

  • 見るからにきれいなコードの書き方
  • コードの分割方法
  • 変数や関数の命名規則

エンジニアのスタンダートとすべき基準を一から解説しています。

何回も読むのに値する本なので、ぜひ手にとって読んでみてください。

イントロダクション:アサーション

こちらでは、Pythonにおけるアサーションの役割とその基本的な使い方についてお伝えしていきます。

  • Pythonにおけるアサーションの役割
  • アサーションの使用例
  • アサーションVS通常の例外:なぜ差が生じるか
  • Pythonのアサーションの基本構文

Pythonにおけるアサーションの役割

アサーションは、プログラムの特定のポイントで条件が真であるかどうかをテストする方法です。

デバッグ中にとくに便利で、期待される状態や条件を明示的にチェックできます。

条件が偽の場合、アサーションは例外を発生させ、これによって開発者は問題の原因を特定しやすくなります。

アサーションの使用例

次のコードは、アサーションを使用して関数の引数が正の整数であるかどうかをチェックする一例です。

def calculate_square_root(x):
    assert x > 0, "値は正の整数でなければいけません。"
    return x ** 0.5

この例では、xが正の整数でない場合、アサーションは失敗し、エラーメッセージが表示されます。

アサーションVS通常の例外:なぜ差が生じるか

アサーションは主に開発とデバッグのフェーズで使用され、コードの正当性をチェックするためのものです。

一方で、通常の例外処理は、実際の運用環境で予期せぬエラーに対処するために使用されます。

アサーションはプログラムのロジックエラーを検出するのに役立ちますが、ユーザー入力や外部リソースのエラーには通常の例外処理を使用するべきです。

Pythonのアサーションの基本構文

Pythonにおけるアサーションでは、 assert ステートメントを使用しておこないます。

基本的な構文は以下のようになります。

assert 条件, エラーメッセージ

ここで、conditionはテストする条件式であり、error_messageは条件が偽の場合に表示されるエラーメッセージです。

x = 5
assert x > 0, "xは正の値である必要があります"
print("条件は正しいです")  # 出力: 条件は正しいです

y = -2
assert y > 0, "yは正の値である必要があります"
print("この行は実行されません")  # yが負の値なので、エラーメッセージが表示されます

Pythonのassertステートメント: よくある誤解と落とし穴

こちらでは、assertステートメントの誤解と、その落とし穴についてお伝えしていきます。

  • データ検証にアサーションステートメントを用いない理由
  • アサーションが失敗しないのはなぜか

データ検証にアサーションステートメントを用いない理由

アサーションはデバッグ目的で使用されるべきであり、本番環境でのデータ検証には適していません。

なぜならPythonは、-O(最適化)オプションで実行された場合、assertステートメントを無視するからです。

データ検証にアサーションを使用している場合、重要なチェックがスキップされる可能性があることを意味します。

アサーションが失敗しないのはなぜか

アサーションが失敗しない一般的な理由は、条件式が常に真と評価されるか、またはPythonが最適化モードで実行されているためです。

条件式を慎重に設計し、アサーションが適切な状況でのみ使用されるようにすることが重要です。

assertステートメントの適切な使用法

こちらでは、assertステートメントの基本的な使い方と無効化方法についてお伝えしていきます。

  • assertステートメントの基本的な使い方
  • assertステートメントの無効化方法

assertステートメントの基本的な使い方

以下の例では、関数の引数が正の整数であることを確認するためにassertステートメントを使用しています。

def factorial(n):
    assert isinstance(n, int) and n >= 0, "Input should be a non-negative integer"
    if n == 0:
        return 1
    return n * factorial(n-1)

factorial関数が非負の整数である引数nを受け取り、その階乗を返します。

assertステートメントにより、引数が非負の整数であることを確認しているのです。

もしそうでなければ、エラーメッセージを表示します。

assertステートメントの無効化方法

Pythonの実行時に-Oオプションを使用することで、assertステートメントを無効化することができます。

このオプションは、Pythonインタープリタに最適化モードで実行するように指示します。

例:

python -O my_script.py

このコマンドは、my_script.py内のassertステートメントを無効にします。

まとめ

当記事では、Pythonのassertステートメントについてお伝えしてきました。

アサーションは、コードの正当性をチェックするための強力なツールですが、本番環境でのデータ検証には適していないということを理解しましょう。

assertステートメントを利用する際の極意は、開発とデバッグの段階で使うこと、そしてコードのロジックエラーを検出する目的で使用することです。

ユーザー入力や外部リソースのエラー処理には通常の例外処理を使用してください。

タイトルとURLをコピーしました