「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Python で \"11" == True の \"1\" が False に評価されるのはなぜですか?

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

2024 年 11 月 13 日に公開
ブラウズ:454

Why Does \

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

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

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

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

'1' in '11' == True

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

('1' in '11') and ('11' == True)

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

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

('1' in '11') == True

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

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

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3