簡體   English   中英

使用-1的邏輯OR運算

[英]Logical OR operation with -1

為什么我在python中嘗試的以下邏輯操作的輸出不同?

-1 or 1
 1 or -1

First返回-1 ,第二個返回1

and or都是懶惰的 ; 它們會評估操作數,直到它們可以決定結果( and在第一個False操作數處停止; or在第一個True操作數處停止)。 它們返回評估的最后一個操作數,如文檔所述

需要注意的是既不and也不or限制值並鍵入他們返回FalseTrue ,而是返回最后一個變量。 這有時是有用的,例如,如果s是一個字符串,如果它是空的,則應該用默認值替換,表達式s or 'foo'產生所需的值。

閱讀文檔

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

兩個第一部件-11被評估True ,並因此返回。 第二部分被忽略了。

or操作員短路。 它返回布爾上下文中的第一個值True ,否則返回最后一個計算的表達式。 在布爾上下文中, -11都是True ,因此您獲得第一個數字。

0None和所有空容器的計算結果為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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM