2017-09-15 55 views
0

當評估在Python布爾值,它說的首要任務,從最高到最低,是notandor,所以爲什麼1 or 2 and 1/0計算爲1?間斷在Python布爾重點

我最好的猜測是它將2 and 1/0作爲或聲明的一個方面,因爲它看到1,所以它短路,就是這樣。但如果是這樣的話,優先考慮什麼?

+3

它是「優先級」,而不是優先級,優先級是控制參數分組,而不是評估順序。 – user2357112

回答

0

也許你的困惑是關於理解「高」和「低」優先級意味着什麼。

在您的示例中,1 or 2 and 1/0,andor的優先級高。因此,and部分進行分組:

1 or (2 and 1/0) 

正如@ user2357112說,這個分​​組並不意味着評估順序爲:1/0尚未評估。

有效以下語法樹已經產生:

or 
/ \ 
1  and 
    / \ 
    2 1/0 

因此,當你猜到了,or語句首先計算:評價者可以短路,並且不需要在右子樹要考慮什麼。

+0

太好了,謝謝!將它描繪成一棵樹非常有幫助! –