[英]Logical OR operation with -1
為什么我在python中嘗試的以下邏輯操作的輸出不同?
-1 or 1
1 or -1
First返回-1
,第二個返回1
閱讀文檔 :
表達式
x or y
首先評估x
; 如果x
為真,則返回其值; 否則,將評估y
並返回結果值。
兩個第一部件-1
和1
被評估True
,並因此返回。 第二部分被忽略了。
or
操作員短路。 它返回布爾上下文中的第一個值True
,否則返回最后一個計算的表達式。 在布爾上下文中, -1
和1
都是True
,因此您獲得第一個數字。
0
, None
和所有空容器的計算結果為False
。
例如:
>>> 0 or 5
5
>>> '' or []
[]
在or
條件,如果第一個條件為真,第二不評價
我認為OP期望'或'的返回值為True或False(在某些其他語言中布爾運算符就是這種情況。)
像Perl一樣,Python只返回第一個“true”值(其中“true”表示數字非零,非字符串表示非空,等等)
類似地,當和僅當兩者都是“真”時,'和'返回最后一個值。
他可能會對類似的結果感到更加驚訝
{'x':1} or [1,2,3]
Perl程序員經常以慣用方式使用這個結構(如open(FILE, "foo.txt") || die
;我不知道這在Python中是否常見。
(見男人 )
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.