2016-09-07 72 views
2
Python的優先級規則

當我評估以下表達式:爲布爾運算符

1或(1/0)和1

哪些規則(優先級,短路評價等)遵循以獲得答案

+0

這個問題還沒有被問到。在Python中引用NOT AND&OR優先級的問題並不涉及這裏發生的短路評估。 –

回答

1

Python短路評估。在你的榜樣,在第一1表達

1 or (1/0) and 1 

完成評估,並返回True

一個更簡單的例子可以說明Python的短路評估。考慮表達式:

(1/0) or 1 

這就提出了在中(1/0)評價ZeroDivisionError例外。但是表達式:

1 or (1/0) 

短路評估爲True。因爲子表達式(1/0)從來沒有得到評估,所以沒有例外。

2

b or anything_else定義爲返回b如果b爲true-ish,則不計算anything_else。由於你的第一個1是真實的,你的1/0永遠不會被評估,因此沒有錯誤。通過「true-ish」,我的意思是任何Python認爲是真的值,不僅是True布爾值。用True或[2]代替第一個1來表達我的意思。

+0

可以鏈接到包含此信息的官方文檔? –

+0

對於Python 2:https://docs.python.org/2/reference/expressions.html#boolean-operations –