1. ホーム
  2. python

[解決済み] python assert括弧付きと括弧なし

2022-07-23 14:43:09

質問

ここでは、4つの簡単なassertの呼び出しを紹介します。

>>> assert 1==2
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
AssertionError

>>> assert 1==2, "hi"
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
AssertionError: hi

>>> assert(1==2)
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
AssertionError

>>> assert(1==2, "hi")

最後のものはエラーを発生させないことに注意してください。 このような動作を引き起こす、括弧の有無によるassertの呼び出しの違いは何でしょうか? 私の実践では括弧を使用しますが、上記は私がそうすべきではないことを示唆しています。

どのように解決するのですか?

最後の assert であれば、警告が表示されたはずです ( SyntaxWarning: assertion is always true, perhaps remove parentheses? を実行した場合、警告が表示されます。 なぜなら assert はキーワードであり関数ではないので、実際には最初の引数としてタプルを渡し、2番目の引数を省いています。

空でないタプルの評価は True と評価され、アサーションメッセージはオプションであるため、実質的に assert True を書いたときに assert(1==2, "hi") .