當評估在Python布爾值,它說的首要任務,從最高到最低,是not
,and
,or
,所以爲什麼1 or 2 and 1/0
計算爲1?間斷在Python布爾重點
我最好的猜測是它將2 and 1/0
作爲或聲明的一個方面,因爲它看到1,所以它短路,就是這樣。但如果是這樣的話,優先考慮什麼?
當評估在Python布爾值,它說的首要任務,從最高到最低,是not
,and
,or
,所以爲什麼1 or 2 and 1/0
計算爲1?間斷在Python布爾重點
我最好的猜測是它將2 and 1/0
作爲或聲明的一個方面,因爲它看到1,所以它短路,就是這樣。但如果是這樣的話,優先考慮什麼?
也許你的困惑是關於理解「高」和「低」優先級意味着什麼。
在您的示例中,1 or 2 and 1/0
,and
比or
的優先級高。因此,and
部分進行分組:
1 or (2 and 1/0)
正如@ user2357112說,這個分組並不意味着評估順序爲:1/0尚未評估。
有效以下語法樹已經產生:
or
/ \
1 and
/ \
2 1/0
因此,當你猜到了,or
語句首先計算:評價者可以短路,並且不需要在右子樹要考慮什麼。
太好了,謝謝!將它描繪成一棵樹非常有幫助! –
它是「優先級」,而不是優先級,優先級是控制參數分組,而不是評估順序。 – user2357112