logo

Python のアサートキーワード

Python アサーション どのプログラミング言語でも、コードのスムーズな流れを助けるデバッグ ツールがあります。アサーションは主に、プログラマーが真であることを知っているか、常に真であることを望んでおり、それが失敗してもコードがそれ以上実行できないようにコードに組み込むという前提です。

Python でのキーワードのアサート

簡単に言うと、アサーションはステートメントが True か False かをチェックするブール式であると言えます。ステートメントが true の場合は何もせずに実行を続行しますが、ステートメントが false の場合はプログラムの実行を停止し、エラーをスローします。

Python Assert ステートメントのフローチャート

Pythonでアサートする

Python Assert ステートメントのフローチャート



Python のアサート キーワードの構文

Python では、 主張する キーワードは、このタスクを達成するのに役立ちます。このステートメントは入力としてブール条件を受け取ります。 true が返された場合は何もせず、通常の実行フローが継続されますが、計算結果が false である場合は、指定されたオプションのメッセージとともに AssertionError が発生します。

構文: アサート条件、error_message (オプション)

パラメーター:

  • 状態 : true または false を返すブール条件。
  • エラーメッセージ : AssertionError の場合にコンソールに出力されるオプションの引数

戻り値: 条件が false と評価された場合は、提供されたエラー メッセージとともに AssertionError を返します。

エラーメッセージなしのPythonのassertキーワード

このコードは、除算演算を実行する前に b の値が 0 であるかどうかをチェックすることにより、Python でのassert の使用法を実証しようとしています。 a は値 4 に初期化され、b は値 0 に初期化されます。プログラムは、「a / b の値は次のとおりです」というメッセージを出力します。assert ステートメントは、b が 0 に等しくないかどうかを確認します。b は 0 であるため、assert ステートメントはステートメントは失敗し、AssertionError が発生します。
失敗したassert ステートメントによって例外が発生するため、プログラムは終了し、次の行の print ステートメントの実行は続行されません。

Python3


JavaScriptのチュートリアル



# initializing number> a>=> 4> b>=> 0> # using assert to check for 0> print>(>'The value of a / b is : '>)> assert> b !>=> 0> print>(a>/> b)>

>

>

出力:

The value of a / b is : --------------------------------------------------------------------------- AssertionError Traceback (most recent call last) Input In [19], in () 8 # using assert to check for 0 9 print('The value of a / b is : ') --->10 アサート b != 0 11 print(a / b) AssertionError:>>' 

Python のassert キーワードとエラー メッセージ

このコードは、除算演算を実行する前に b の値が 0 であるかどうかをチェックすることにより、Python でのassert の使用法を実証しようとしています。 a は値 4 に初期化され、b は値 0 に初期化されます。プログラムは、「a / b の値は次のとおりです」というメッセージを出力します。assert ステートメントは、b が 0 に等しくないかどうかを確認します。b は 0 であるため、assert ステートメントはステートメントが失敗し、次のメッセージを伴う AssertionError が発生します。 ゼロ除算エラー
以来 例外 失敗したassert ステートメントによって発生した場合、プログラムは終了し、次の行の print ステートメントの実行は続行されません。

Python3




# Python 3 code to demonstrate> # working of assert> # initializing number> a>=> 4> b>=> 0> # using assert to check for 0> print>(>'The value of a / b is : '>)> assert> b !>=> 0>,>'Zero Division Error'> print>(a>/> b)>

>

出力:

AssertionError: Zero Division Error>

関数内でアサートする

この例では、関数内で Assert ステートメントを使用して、長方形の面積を計算する前に長方形の長さと幅が正であることを確認します。アサーションは、「長さと幅が false の場合、長さと幅は正である必要があります」というメッセージとともに AssertionError を発生させます。アサーションが true の場合、関数は四角形の面積を返します。 false の場合、エラーで終了します。さまざまな状況で Assert を利用する方法を示すために、この関数は 2 回呼び出されます。1 回は正の入力で、もう 1 回は負の入力で呼び出されます。

Python3




# Function to calculate the area of a rectangle> def> calculate_rectangle_area(length, width):> ># Assertion to check that the length and width are positive> >assert> length>>>0> and> width>>>0>,>'Length and width'>+> > >'must be positive'> ># Calculation of the area> >area>=> length>*> width> ># Return statement> >return> area> # Calling the function with positive inputs> area1>=> calculate_rectangle_area(>5>,>6>)> print>(>'Area of rectangle with length 5 and width 6 is'>, area1)> # Calling the function with negative inputs> area2>=> calculate_rectangle_area(>->5>,>6>)> print>(>'Area of rectangle with length -5 and width 6 is'>, area2)>

>

>

出力:

AssertionError: Length and widthmust be positive>

ブール条件によるアサート

この例では、assert ステートメントはブール条件 x が満たされているかどうかをチェックします。

Python3




# Initializing variables> x>=> 10> y>=> 20> # Asserting a boolean condition> assert> x # Printing the values of x and y print('x =', x) print('y =', y)>

>

>

出力:

x = 10 y = 20>

Python で変数の型をアサートする

この例では、assert ステートメントは、変数 a と b の型がそれぞれ str と int であるかどうかをチェックします。いずれかのアサーションが失敗すると、AssertionError が発生します。両方のアサーションが合格した場合、プログラムは続行し、a と b の値を出力します。

Python3




# Initializing variables> a>=> 'hello'> b>=> 42> # Asserting the type of a variable> assert> type>(a)>=>=> str> assert> type>(b)>=>=> int> # Printing the values of a and b> print>(>'a ='>, a)> print>(>'b ='>, b)>

>

>

出力:

a = hello b = 42>

ディクショナリ値のアサート

この例では、assert ステートメントは、辞書 my_dict 内のキー apple、banana、cherry に関連付けられた値がそれぞれ 1、2、3 であるかどうかをチェックします。いずれかのアサーションが失敗すると、AssertionError が発生します。すべてのアサーションが合格すると、プログラムは続行され、辞書の内容を出力します。

Python3




# Initializing a dictionary> my_dict>=> {>'apple'>:>1>,>'banana'>:>2>,>'cherry'>:>3>}> # Asserting the contents of the dictionary> assert> my_dict[>'apple'>]>=>=> 1> assert> my_dict[>'banana'>]>=>=> 2> assert> my_dict[>'cherry'>]>=>=> 3> # Printing the dictionary> print>(>'My dictionary contains the following key-value pairs:'>, my_dict)>

>

>

出力:

My dictionary contains the following key-value pairs: {'apple': 1, 'banana': 2, 'cherry': 3}>

実用化

これは、あらゆる開発ドメインのテストおよび品質保証の役割において、はるかに大きな有用性をもたらします。アプリケーションに応じて、さまざまな種類のアサーションが使用されます。以下は、すべての温かい食品を含むバッチのみの発送を許可し、それ以外の場合はバッチ全体を拒否するプログラムの簡単なデモンストレーションです。

Python3




# Python 3 code to demonstrate> # working of assert> # Application> # initializing list of foods temperatures> batch>=> [>40>,>26>,>39>,>30>,>25>,>21>]> # initializing cut temperature> cut>=> 26> # using assert to check for temperature greater than cut> for> i>in> batch:> >assert> i>>>=> 26>,>'Batch is Rejected'> >print> (>str>(i)>+> ' is O.K'> )>

dfs アルゴリズム

>

>

出力:

40 is O.K 26 is O.K 39 is O.K 30 is O.K>

実行時例外:

AssertionError: Batch is Rejected>

Python Assert ステートメントを使用する理由

Python では、assert ステートメントは、間違いを特定し、コードが意図したとおりに動作していることを確認するのに役立つ強力なデバッグ ツールです。ここでは、assert を使用する理由をいくつか示します。

  1. デバッグ: コードによって行われた仮定は、assert ステートメントで検証できます。コード全体にassert ステートメントを配置すると、間違いをすばやく見つけてプログラムをデバッグできます。
  2. ドキュメンテーション: コード内でのアサート ステートメントの使用は、ドキュメントとして機能する場合があります。 Assert ステートメントは、コードが行っている前提を明示的に説明するため、他の人がコードを理解し、操作するのが簡単になります。
  3. テスト: 特定の要件が満たされていることを確認するために、単体テストでは Assert ステートメントが頻繁に使用されます。テストにassert ステートメントを組み込むことで、コードが適切に動作していること、および加えた変更によって現在の機能が損なわれていないことを確認できます。
  4. 安全: Assert を使用すると、プログラム入力が要件に準拠していることを確認し、検証できます。そうすることで、バッファ オーバーフローや SQL インジェクション攻撃などのセキュリティ上の欠陥を回避できる可能性があります。