簡體   English   中英

Python“in”和“==”混淆

[英]Python “in” and “==” confusion

print('a' in 'aa')
print('a' in 'aa' == True)
print(('a' in 'aa') == True)
print('a' in ('aa' == True))

輸出是

True
False
True
Traceback (most recent call last):
  File "main.py", line 6, in <module>
    print('a' in ('aa' == True))
TypeError: argument of type 'bool' is not iterable

如果第2行既不是第3行也不是第4行,那么它是什么? 怎么會變錯?

根據表達式

print('a' in 'aa' == True)

被評估為

'a' in 'aa' and 'aa' == True

這是False

看到

print("a" in "aa" and "aa" == True)

==> False

其余的都是微不足道的 - 它有助於保持操作員的優先權 ,以便弄明白。


類似的:

用不同的聲明。 我標記為dupe,但用戶界面很不穩定 - 我回答的問題是解釋為什么的確打印了它的作用。

案例1:答案是True很簡單。

print('a' in 'aa')

情況2:此操作'a' in 'aa' and 'aa' == True評估為'a' in 'aa' and 'aa' == True ,因此很明顯它將返回false。

print('a' in 'aa' == True)

情況3:現在因為我們有()封閉('a' in 'aa')並且()的優先級最高,所以首先'a' in 'aa'被評估為True然后True == True

print(('a' in 'aa') == True)

情況4:與上述相同,因為優先級的()其評價為'aa' == True ,這將導致錯誤,因為它試圖應用in在非可迭代是布爾值。

print('a' in ('aa' == True))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM