ホームページ  >  記事  >  バックエンド開発  >  Python で \"11" == True の \"1\" が False に評価されるのはなぜですか?

Python で \"11" == True の \"1\" が False に評価されるのはなぜですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-10-30 09:34:27392ブラウズ

Why Does

Python の演算子の優先順位の難問: 'in' と比較の謎を解明する

Python の 'in' 演算子と比較で観察される複雑な動作比較すると多くの人が当惑してしまいます。しかし、表面下には、演算子の優先順位と式の連鎖の微妙な相互作用があります。

演算子の優先順位によって、式内で演算が評価される順序が決まります。 Python では、「in」と比較演算子 (「==」など) の優先順位は同じです。したがって、左から右に処理されます。

ただし、連鎖式が含まれる場合、状況はさらに複雑になります。 「in」演算の結果を別の値と比較しようとすると、よくある落とし穴が発生します。次の例を考えてみましょう:

<code class="python">'1' in '11' == True</code>

驚くべきことに、この式は False と評価されます。その理由は、「in」と「==」の連鎖にあります。式は実質的に次のように解析されます:

<code class="python">('1' in '11') and ('11' == True)</code>

「in」演算子は、「1」が「11」のメンバーであるかどうかを検証し、結果は True になります。ただし、2 番目の比較 '11' == True の結果は False です。したがって、式全体は False と評価されます。

必要な True 値を取得するには、優先順位を明示的に変更する必要があります。これは括弧を使用して実現できます。

<code class="python">('1' in '11') == True</code>

「in」演算を括弧で囲むことにより、式は True と比較する前にそのスコープ内で評価されます。この変更により、意図したとおり True の結果が得られます。

複雑な Python 式の動作を解読するには、演算子の優先順位と連鎖を理解することが重要です。これにより、開発者は一連の操作を予測し、予期せぬ落とし穴を回避できるようになります。

以上がPython で \"11" == True の \"1\" が False に評価されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。