首頁  >  文章  >  後端開發  >  為什麼「1 in \'11\' == True\」在 Python 中回傳 TypeError?

為什麼「1 in \'11\' == True\」在 Python 中回傳 TypeError?

Susan Sarandon
Susan Sarandon原創
2024-11-01 14:33:29987瀏覽

Why Does

理解Python 中的運算子優先順序:「in」與比較

在Python 中,確定運算順序對於計算表達式至關重要正確。運算子的優先權指定了它們的優先級,優先順序較高的運算子首先被計算。

考慮以下表達式:

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

兩個表達式的計算結果均為 True,表示 'in' 運算子優先權低於比較運算子「==」。但是,在「in」表達式周圍放置括號會改變求值順序:

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

此表達式會引發 TypeError,表示某些內容不太正確。要了解原因,讓我們檢查一下 Python 的運算子優先順序。

根據 Python 文檔,「in」和「==」具有相同的優先順序。因此,Python 從左到右對它們進行計算。在本例中,Python 首先計算“11”中的“1”,結果為 True。但是,「== True」部分隨後被計算為布林表達式,導致 TypeError,因為布林值無法迭代。

要解決此問題,您可以利用連結。連結允許將具有相同優先順序的多個運算子組合在一起並從左到右進行評估。透過如下新增括號,您可以強制先計算 'in' 運算子:

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

此表達式的計算結果為 False,這與您的期望一致。括號確保先計算「in」運算符,結果為 True。然後將其與「==」表達式中的 True 進行比較,得到 False。

以上是為什麼「1 in \'11\' == True\」在 Python 中回傳 TypeError?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn