您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關python中and和or有什么區別,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
and 是返回第一個假值,如果都為真,則返回最后一個真值,然后就會忽略其余的比較值
or 是返回第一個真值,如果都為真,則返回第一個真值,然后就會忽略其余的比較值
0、''、[]、()、{}、None 在布爾上下文中為假;其它任何東西都為真
使用 and-or 技巧
例 and-or 技巧介紹
>>> a = "first" >>> b = "second" >>> 1 and a or b 'first' >>> 0 and a or b 'second'
這個語法看起來類似于 C 語言中的 bool ? a : b 表達式。整個表達式從左到右進行演算,所以先進行 and 表達式的演算。 1 and 'first' 演算值為 'first',然后 'first' or 'second' 的演算值為 'first'。
0 and 'first' 演算值為 False,然后 0 or 'second' 演算值為 'second'。
然而,由于這 種 Python 表達式單單只是進行布爾邏輯運算,并不是語言的特定構成,這是 and-or 技巧和 C 語言中的 bool ? a : b 語法非常重要的不同。如果 a 為假,表達式就不會按你期望的那樣工作了。(你能知道我被這個問題折騰過嗎?不只一次?)
例 and-or 技巧無效的場合
>>> a = "" >>>b = "second" >>> 1 and a or b 'second'
由于 a 是一個空字符串,在 Python 的布爾上下文中空字符串被認為是假的,1 and '' 的演算值為 '',最后 '' or 'second' 的演算值為 'second'。噢!這個值并不是你想要的。
and-or 技巧,bool and a or b 表達式,當 a 在布爾上下文中的值為假時,不會像 C 語言表達式 bool ? a : b 那樣工作。
在 and-or 技巧后面真正的技巧是,確保 a 的值決不會為假。最常用的方式是使 a 成為 [a] 、 b 成為 [b],然后使用返回值列表的第一個元素,應該是 a 或 b中的某一個。
例 安全使用 and-or 技巧
>>> a = "" >>> b = "second" >>> (1 and [a] or [b])[0] ''
由于 [a] 是一個非空列表,所以它決不會為假。即使 a 是 0 或者 '' 或者其它假值,列表 [a] 也為真,因為它有一個元素。
到現在為止, 這個技巧可能看上去問題超過了它的價值。畢竟,使用 if 語句可以完成相同的事情,那為什么要經歷這些麻煩事呢?哦,在很多情況下,你要在兩個常量值中進行選擇,由于你知道 a 的值總是為真,所以你可以使用這種較為簡單的語法而且不用擔心。對于使用更為復雜的安全形式,依然有很好的理由要求這樣做。例如,在 Python 語言的某些情況下 if 語句是不允許使用的,比如在 lambda 函數中。
注:這里由于語句是從左向右解釋的。我們可以這樣的來理解。
歸納一下:
and語句:
0 and * 不需要再考慮*是0還是1,結果是0
1 and * 需要考慮*是0還是1來決定結果。
or語句:
1 or * 不需要考慮后面的*,結果為1
0 or * 需要考慮后面的*來決定結果
關于python中and和or有什么區別就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。