2012-02-15 54 views
10

Python中這種行爲的解釋是什麼?Python「and」操作符ints

a = 10 
b = 20 
a and b # 20 
b and a # 10 

a and b計算結果爲20,而b and a計算結果爲10是正整數等同於真實的嗎?爲什麼它評估到第二個值?因爲它是第二?

回答

16

documentation解釋了這個相當不錯:

表達式x and y首先評估x;如果x爲假,則返回其值;否則,將評估y並返回結果值。

or類似,這可能會成爲你嘴脣上的下一個問題。

表達式x or y首先評估x;如果x爲真,則返回其值;否則,將評估y並返回結果值。

0

在蟒一切不是無,0,假 「」,[],(),{}爲True

a和b被readed爲真時真在這種情況下 b的相同和

和是在這種情況下,需要第一個值

編輯:不全是在評論

+0

通過「第一」你意思是「第二」? – 2012-02-15 18:26:13

+0

我不認爲這是「取」第一個價值。我認爲它正在評估表達式中的第二個值。任何人都可以指出一個解釋這個的資源嗎? (謝謝戴夫!) – 2012-02-15 18:26:55

+1

這不太對。例如'[]'是'假'。通過調用Python 2中的'__nonzero__'或Python 3中的__bool__'完成評估。 – Dougal 2012-02-15 18:27:16

4

docs

x and y  if x is false, then x, else y 

非零整數被視爲布爾值true,所以你得到完全的文檔中描述的行爲:

>>> a = 10 
>>> b = 20 
>>> a and b 
20 
>>> b and a 
10