ホームページ >バックエンド開発 >Python チュートリアル >Python で `a == x or y or z` が常に True と評価されるのはなぜですか?
「a == x or y or z」の誤謬
変数を複数の値と比較しようとするとき、次のように使用したくなります。 Python の論理演算子:
if a == x or y or z: # Incorrect
ただし、この式は常に次のように評価されます。 a の値に関係なく、真です。これは、このコンテキストの「or」演算子が期待どおりに動作しないためです。
「or」演算子の仕組み
Python の「or」演算子 (|)いずれかのオペランドが True の場合、True と評価されます。したがって、上記の式では、x、y、または z のいずれかが常に True (Python では空でない値は True) であるため、式は a.
複数の値と比較する正しい方法
変数を複数の値と正しく比較するには、いくつかの方法があります。オプション:if a == x or a == y or a == z: # Correct
if a in {"Kevin", "Jon", "Inbar"}: # Correct
if any(a == auth for auth in ["Kevin", "Jon", "Inbar"]): # Correct
パフォーマンスを考慮する
パフォーマンスの観点から、「in」演算子を使用したセットまたはリストの使用は次のとおりです。通常は最も速いオプションです。 「any()」を使用したジェネレータ式は、最も冗長で最も時間がかかります。使用例
許可されたユーザーのみにアクセスを許可するには:以上がPython で `a == x or y or z` が常に True と評価されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。