python中and和or有什么區(qū)別

這篇文章將為大家詳細講解有關(guān)python中and和or有什么區(qū)別,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

創(chuàng)新互聯(lián)建站專注于企業(yè)全網(wǎng)整合營銷推廣、網(wǎng)站重做改版、沾化網(wǎng)站定制設(shè)計、自適應(yīng)品牌網(wǎng)站建設(shè)、html5商城開發(fā)、集團公司官網(wǎng)建設(shè)、外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計等建站業(yè)務(wù),價格優(yōu)惠性價比高,為沾化等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。

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 表達式單單只是進行布爾邏輯運算,并不是語言的特定構(gòu)成,這是 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],然后使用返回值列表的第一個元素,應(yīng)該是 a 或 b中的某一個。

例 安全使用 and-or 技巧

>>> a = ""
 
>>> b = "second"
 
>>> (1 and [a] or [b])[0]
 
''

由于 [a] 是一個非空列表,所以它決不會為假。即使 a 是 0 或者 '' 或者其它假值,列表 [a] 也為真,因為它有一個元素。

到現(xiàn)在為止, 這個技巧可能看上去問題超過了它的價值。畢竟,使用 if 語句可以完成相同的事情,那為什么要經(jīng)歷這些麻煩事呢?哦,在很多情況下,你要在兩個常量值中進行選擇,由于你知道 a 的值總是為真,所以你可以使用這種較為簡單的語法而且不用擔心。對于使用更為復雜的安全形式,依然有很好的理由要求這樣做。例如,在 Python 語言的某些情況下 if 語句是不允許使用的,比如在 lambda 函數(shù)中。

注:這里由于語句是從左向右解釋的。我們可以這樣的來理解。

歸納一下:

and語句:

0 and * 不需要再考慮*是0還是1,結(jié)果是0

1 and * 需要考慮*是0還是1來決定結(jié)果。

or語句:

1 or * 不需要考慮后面的*,結(jié)果為1

0 or * 需要考慮后面的*來決定結(jié)果

關(guān)于python中and和or有什么區(qū)別就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

文章名稱:python中and和or有什么區(qū)別
標題來源:http://bm7419.com/article46/iicdeg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站排名、、ChatGPT、網(wǎng)站營銷、網(wǎng)站策劃企業(yè)建站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站建設(shè)