AFAIK:Python:爲什麼False或'name'返回'name'而不是False?
and
,or
是布爾運算符和任何布爾表達式應該返回一個布爾值。
那麼,爲什麼出現這種情況:
False or 'name'
回報'name'
而不是True
True and ''
回報''
,而不是False
請解釋一下,Python是怎樣處理的布爾表達式?
AFAIK:Python:爲什麼False或'name'返回'name'而不是False?
and
,or
是布爾運算符和任何布爾表達式應該返回一個布爾值。
那麼,爲什麼出現這種情況:
False or 'name'
回報'name'
而不是True
True and ''
回報''
,而不是False
請解釋一下,Python是怎樣處理的布爾表達式?
不,在Python中or
和and
操作短路並返回最後一個評估項目。
表達
x and y
首先評估x
;如果x
爲假,則返回其值;否則,將評估y
並返回結果值。表達式
x or y
首先評估x
;如果x
爲真,則返回其值;否則,將評估y
並返回結果值。
如果必須有一個布爾值,使用bool()
:
>>> bool(False or 'name')
True
但是,當我在JavaScript和紅寶石中嘗試它時,它的工作原理與python中的一樣。但是當我在C中嘗試同樣的短路時,它返回1和0,即布爾結果。由於我們使用的是cpython,它應該與C相同,但它不是。爲什麼? –
這是python,而不是C.它在Jython,PyPy和IronPython中是一樣的。該語言指出這是如何工作的,並且在許多地方使用「副作用」;例如'某些變量=其他變量或後備'。 –
我不是說它是語言之間的鬥爭,我的意思是'和'和'or'是邏輯運算符,所以它們應該返回布爾結果,默認情況下。 –
Downvoter,請至少佔有率什麼可以改進? –