亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

Python 中的 or and 運(yùn)算,看這一篇就夠

劉永祥 / 2396人閱讀

摘要:?jiǎn)栴}出現(xiàn)中的,運(yùn)算,可以寫出比較復(fù)雜的演算表達(dá)式看了一些大神的演算規(guī)則解釋,覺(jué)得不是很好理解,有些人甚至理解錯(cuò)了規(guī)則。特殊情況當(dāng)表達(dá)式的所有值都是真值,并且運(yùn)算符不全部一致,那么第一個(gè)或演算完后直接返回。

問(wèn)題出現(xiàn):
Python 中的 or,and 運(yùn)算,可以寫出比較復(fù)雜的演算表達(dá)式;
看了一些大神的演算規(guī)則解釋,覺(jué)得不是很好理解,有些人甚至理解錯(cuò)了規(guī)則。
這里聊一下自己的理解。
其他人是怎么做的:
先看兩個(gè)例子熱下身:
    return 1 or 2
    return 1 and 2

兩元的 or and 運(yùn)算可以通過(guò)死記來(lái)掌握:
    如果有一個(gè)值為真,or 立刻返回第一個(gè)真值;
    ......

如果你記得兩元的 or,and 運(yùn)算規(guī)則,你肯定知道正確答案:
    return 1 or 2      # 返回 1
    return 1 and 2       # 返回 2

個(gè)人不推薦死記,因?yàn)槿菀淄浐蜕踔僚煜?
可以這樣理解:
Python 中,
    or 可以理解為找真值演算,從左到右發(fā)現(xiàn)真值就返回真值;
        如果兩個(gè)都是假值,那就返回最后一個(gè)假值。

    and 可以理解為找假值演算,從左到右發(fā)現(xiàn)假值就返回假值;
        如果兩個(gè)都是真值,那就返回最后一個(gè)真值。

演算規(guī)則簡(jiǎn)單歸納一下就是:
    or :找真值:
        如果有一個(gè)值為真,or 立刻返回第一個(gè)真值;
        如果所有值都為假,or 返回最后一個(gè)假值。
        
    and :找假值:
        如果有一個(gè)值為假,and 立刻返回第一個(gè)假值;
        如果所有值都為真,and 返回最后一個(gè)真值。
分析:
先來(lái)看比較難搞的三元演算表達(dá)式的例子:
    return 0 and 1 or 2

相信你也發(fā)現(xiàn)了,三元的運(yùn)算可以拆分成兩個(gè)兩元的運(yùn)算表達(dá)式:
    return 0 and 1 or 2 中:
        0 and 1 :找假值,返回 0;
        然后把返回的 0 繼續(xù)和后面的表達(dá)式做演算:
        0 or 2 :找真值,返回 2。
所以:
    return 0 and 1 or 2 :# 返回 2

就是這么簡(jiǎn)單。

當(dāng)然,這還沒(méi)完!
還有一種特殊情況需要分析。
特殊情況分析:
當(dāng)表達(dá)式的所有值都是真值,并且運(yùn)算符不全部一致,
    那么第一個(gè) or 或 and 演算完,直接返回。

    舉兩個(gè)梨子:
        return 1 or 2 and 3 :
        1 or 2:找真值返回1;因?yàn)槿恐刀际钦嬷?,且運(yùn)算符不全部一致,直接返回。

        return 1 and 2 or 3 中:
        1 and 2:找假值返回2;因?yàn)槿恐刀际钦嬷?,且運(yùn)算符不全部一致,直接返回。

    所以:
        return 1 or 2 and 3 :# 返回 1
        return 1 and 2 or 3 :# 返回 2
特殊情況的反面:
可能會(huì)有人有疑問(wèn):
    既然全部值都為真值,且運(yùn)算符不全部一致的時(shí)候,只算第一個(gè) or 或 and ,
    那么全部值都為假值,且運(yùn)算符不全部一致的話,是不是也只算第一個(gè) or 或 and 呢!

答案是否定的。

我們來(lái)驗(yàn)證一下:

    return "" or 0 and None
    上面的結(jié)果返回的是 0;
    
    return "" and None or 0
    上面的結(jié)果返回的是 0;

那么全部值為真值,且運(yùn)算符全部一致的時(shí)候呢:

    return 0 and None and ""
    上面的結(jié)果返回的是 0;
    
    return "" or None or 0
    上面的結(jié)果返回的是 0;

所以,就算值都是假值,也要老老實(shí)實(shí)做運(yùn)算,別想著運(yùn)算第一個(gè) or 或 and 就完事了。
練習(xí)一下:
二元運(yùn)算:
    return 1 or 0
    return 1 and 0

    return 1 or 2
    return 1 and 2

三元運(yùn)算:
    return 1 or 2 or 3
    return 1 and 2 and 3
    注意:上面兩個(gè)表達(dá)式的值全部為真值,但是表達(dá)式的演算符號(hào)相同。

四元運(yùn)算:
    return "" and None or 0 and 1
        
(參考答案預(yù)警!你不打算在心里演算一下么?)

參考答案:
    
return 1 and 0 :# 返回 0
return 1 or 0 :# 返回 1

return 1 or 2 :# 返回 1
return 1 and 2 :# 返回 2

return 1 or 2 or 3 :# 返回 1
return 1 and 2 and 3 :# 返回 3

return "" and None or 0 and 1 :# 返回 0
小結(jié):
or :找真值:
    如果有一個(gè)值為真,or 返回第一個(gè)真值;
    如果所有的值都為假,or 返回最后一個(gè)假值。

and :找假值:
    如果有一個(gè)值為假,and 返回第一個(gè)假值;
    如果所有的值都為真,and 返回最后一個(gè)真值。

特殊情況:
    當(dāng)表達(dá)式的所有值都是真值,并且運(yùn)算符不全部一致,
    那么第一個(gè) or 或 and 演算完后直接返回。

傳送門:http://blog.51cto.com/1350814...
本文系筆者原創(chuàng)
轉(zhuǎn)載請(qǐng)注明出處
—————————————

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/42778.html

相關(guān)文章

  • Python字符串的格式化,看這一篇就夠

    摘要:相信很多人在格式化字符串的時(shí)候都用的語(yǔ)法,提出一種更先進(jìn)的格式化方法并成為的標(biāo)準(zhǔn)用來(lái)替換舊的格式化語(yǔ)法,從開(kāi)始已經(jīng)實(shí)現(xiàn)了這一方法其它解釋器未考證。 showImg(https://segmentfault.com/img/remote/1460000018650325); 相信很多人在格式化字符串的時(shí)候都用%s % v的語(yǔ)法,PEP 3101 提出一種更先進(jìn)的格式化方法 str.for...

    BDEEFE 評(píng)論0 收藏0
  • Python 3 入門,看這就夠

    摘要:縮進(jìn)不一致,會(huì)導(dǎo)致運(yùn)行錯(cuò)誤。變量變量在使用前必須先定義即賦予變量一個(gè)值,否則會(huì)報(bào)錯(cuò)數(shù)據(jù)類型布爾只有和兩個(gè)值,表示真或假。 簡(jiǎn)介 Python 是一種高層次的結(jié)合了解釋性、編譯性、互動(dòng)性和面向?qū)ο蟮哪_本語(yǔ)言。Python 由 Guido van Rossum 于 1989 年底在荷蘭國(guó)家數(shù)學(xué)和計(jì)算機(jī)科學(xué)研究所發(fā)明,第一個(gè)公開(kāi)發(fā)行版發(fā)行于 1991 年。 特點(diǎn) 易于學(xué)習(xí):Python ...

    Shimmer 評(píng)論0 收藏0
  • Java 中的 override 和 overload,看這一篇就夠

    摘要:同樣的方法名稱,參數(shù)列表,返回類型,拋出的異常或者是父類拋出的異常的子類,子類重寫一個(gè)。使用方法過(guò)載的目的,根據(jù)調(diào)用時(shí)的實(shí)參表與形參表,來(lái)選擇對(duì)應(yīng)的方法體的。 問(wèn)題出現(xiàn): 即使對(duì)于一個(gè)經(jīng)驗(yàn)豐富的開(kāi)發(fā)人員來(lái)說(shuō),方法重載和方法覆蓋的區(qū)別都能讓他猶豫一下, 對(duì)于新手來(lái)說(shuō),經(jīng)常容易弄混淆。 有沒(méi)有比較深入淺出的理解方式,能讓人過(guò)目不忘,用起來(lái)還能有條件反射般的速度呢? 其他人是怎么做的: 寫...

    clasnake 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

劉永祥

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<