{category}

Python - アサーション

assert

アサート(関数とクラス

意味 条件をテスト


assertとは?

assert文は、プログラムの特定の時点で条件が真であることを確認するために使います。もし条件が偽であった場合、プログラムはエラーを発生させ、処理を中断します。

assertの具体的な使い方

リストの要素数のチェック

def process_list(items):
    assert len(items) > 0, 'リストが空です'
    assert len(items) <= 5, 'リストの要素が多すぎます'
    
    return sum(items) / len(items)

try:
    result1 = process_list([1, 2, 3, 4])
    print(f'平均値: {result1}')
    
    result2 = process_list([])
except AssertionError as e:
    print(f'エラー: {e}')

try:
    result3 = process_list([1, 2, 3, 4, 5, 6])
except AssertionError as e:
    print(f'エラー: {e}')

👇出力結果

平均値: 2.5
エラー: リストが空です
エラー: リストの要素が多すぎます

このコードでは、assertを使ってリストの要素数が0より大きく5以下であることを確認しています。条件を満たさない場合、AssertionErrorが発生し、指定したエラーメッセージが表示されます。

関数の戻り値の型チェック

def get_user_age():
    # ユーザーの年齢を取得する処理(ここでは固定値を返す)
    return 25

age = get_user_age()
assert isinstance(age, int), '年齢は整数でなければなりません'
assert 0 <= age <= 120, '年齢は0以上120以下でなければなりません'

print(f'ユーザーの年齢: {age}歳')

👇出力結果

ユーザーの年齢: 25歳

この例では、get_user_age関数の戻り値が整数であり、かつ現実的な範囲内(0〜120歳)であることを確認しています。これにより、予期せぬデータ型や不正な値を早期に検出できます。

assertに関するよくある質問

Q. assertとifの違いは?
A. assertは開発中のデバッグやテスト用途に使用され、条件が偽の場合にAssertionErrorを発生させます。一方、ifは通常のプログラムフローの制御に使用されます。本番環境ではassertが無効化されることがあるため、重要な検証にはifを使用すべきです。
Q. assertは常に有効?
A. Pythonインタプリタに-Oオプションを付けて実行すると、assert文は無視されます。これは最適化モードと呼ばれ、パフォーマンス向上のために使用されることがあります。
Q. assertのメッセージは必須?
A. assertのエラーメッセージは省略可能です。例えば、assert b != 0 のように書くこともできます。ただし、エラーメッセージを含めると、問題の原因をより明確に特定できるため、推奨されます。

assertが学べる書籍の紹介

「プログラミング単語帳」を使って、プログラミングの単語を英単語のように学習してみませんか?
プログラミング単語帳には、Pythonのassertや__enter__、__next__、__iter__、などのような実務でよく使われる単語が数百以上収録されています。
この書籍には、プログラミングの単語の意味や読み方、単語の使い方がわかる例文などが掲載されており、いつでもどこでもプログラミングの学習ができます。

よく使われる単語にだけ絞って学習することができるので、効率的にプログラミングが学習できます。

1日5分の暗記でプログラミンが身に付く!プログラミング単語帳 公式ストアで発売中!

HTML編、CSS編、JavaScript編、PHP編、Ruby編、その他単語編の6シリーズ分が公式ストアにて販売中です。気になった方はぜひ購入してみてください。


Pythonを学べる「プログラミング単語帳」アプリ

プログラミング単語帳がアプリになりました!Pythonはもちろん、10種類のプログラミング言語の中から、よく使われる単語をスマホで学習できます。

収録単語は2,000単語以上!
現在は、HTML、CSS、JavaScirpt、PHP、Laravel、Ruby、Python、MySQL、Linux、など10カテゴリーの単語帳が1つのアプリに収録されています。

いつでも、どこでも、隙間時間を有効活用して、プログラミングを効率的に学べるので、ぜひダウンロードしてみてください。

2024年7月アップデート情報:「Laravel」カテゴリーが追加されましました!

2024年8月アップデート情報:「MySQL」「Linux」カテゴリーが追加されましました!


関連するそのほかの単語

__enter__

開始処理

種類: 特殊メソッド

__next__

反復処理の次の要素

種類: 特殊メソッド

__iter__

反復処理の準備

種類: 特殊メソッド

pass

何もしない

種類: その他

theano

数式表現と計算

種類: ディープラーニング