1

AFAIK:Python:爲什麼False或'name'返回'name'而不是False?

andor是布爾運算符和任何布爾表達式應該返回一個布爾值。

那麼,爲什麼出現這種情況:

  • False or 'name'回報'name'而不是True
  • True and ''回報'',而不是False

請解釋一下,Python是怎樣處理的布爾表達式?

+0

Downvoter,請至少佔有率什麼可以改進? –

回答

8

不,在Python中orand操作短路並返回最後一個評估項目。

參見Boolean operations

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

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

如果必須有一個布爾值,使用bool()

>>> bool(False or 'name') 
True 
+0

但是,當我在JavaScript和紅寶石中嘗試它時,它的工作原理與python中的一樣。但是當我在C中嘗試同樣的短路時,它返回1和0,即布爾結果。由於我們使用的是cpython,它應該與C相同,但它不是。爲什麼? –

+0

這是python,而不是C.它在Jython,PyPy和IronPython中是一樣的。該語言指出這是如何工作的,並且在許多地方使用「副作用」;例如'某些變量=其他變量或後備'。 –

+0

我不是說它是語言之間的鬥爭,我的意思是'和'和'or'是邏輯運算符,所以它們應該返回布爾結果,默認情況下。 –

相關問題