成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Python 中的 or and 運算,看這一篇就夠

劉永祥 / 2340人閱讀

摘要:問題出現(xiàn)中的,運算,可以寫出比較復雜的演算表達式看了一些大神的演算規(guī)則解釋,覺得不是很好理解,有些人甚至理解錯了規(guī)則。特殊情況當表達式的所有值都是真值,并且運算符不全部一致,那么第一個或演算完后直接返回。

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

兩元的 or and 運算可以通過死記來掌握:
    如果有一個值為真,or 立刻返回第一個真值;
    ......

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

個人不推薦死記,因為容易忘記和甚至弄混淆。
可以這樣理解:
Python 中,
    or 可以理解為找真值演算,從左到右發(fā)現(xiàn)真值就返回真值;
        如果兩個都是假值,那就返回最后一個假值。

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

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

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

就是這么簡單。

當然,這還沒完!
還有一種特殊情況需要分析。
特殊情況分析:
當表達式的所有值都是真值,并且運算符不全部一致,
    那么第一個 or 或 and 演算完,直接返回。

    舉兩個梨子:
        return 1 or 2 and 3 :
        1 or 2:找真值返回1;因為全部值都是真值,且運算符不全部一致,直接返回。

        return 1 and 2 or 3 中:
        1 and 2:找假值返回2;因為全部值都是真值,且運算符不全部一致,直接返回。

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

答案是否定的。

我們來驗證一下:

    return "" or 0 and None
    上面的結果返回的是 0;
    
    return "" and None or 0
    上面的結果返回的是 0;

那么全部值為真值,且運算符全部一致的時候呢:

    return 0 and None and ""
    上面的結果返回的是 0;
    
    return "" or None or 0
    上面的結果返回的是 0;

所以,就算值都是假值,也要老老實實做運算,別想著運算第一個 or 或 and 就完事了。
練習一下:
二元運算:
    return 1 or 0
    return 1 and 0

    return 1 or 2
    return 1 and 2

三元運算:
    return 1 or 2 or 3
    return 1 and 2 and 3
    注意:上面兩個表達式的值全部為真值,但是表達式的演算符號相同。

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

參考答案:
    
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
小結:
or :找真值:
    如果有一個值為真,or 返回第一個真值;
    如果所有的值都為假,or 返回最后一個假值。

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

特殊情況:
    當表達式的所有值都是真值,并且運算符不全部一致,
    那么第一個 or 或 and 演算完后直接返回。

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

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

轉載請注明本文地址:http://systransis.cn/yun/42778.html

相關文章

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

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

    BDEEFE 評論0 收藏0
  • Python 3 入門,看這就夠

    摘要:縮進不一致,會導致運行錯誤。變量變量在使用前必須先定義即賦予變量一個值,否則會報錯數(shù)據(jù)類型布爾只有和兩個值,表示真或假。 簡介 Python 是一種高層次的結合了解釋性、編譯性、互動性和面向對象的腳本語言。Python 由 Guido van Rossum 于 1989 年底在荷蘭國家數(shù)學和計算機科學研究所發(fā)明,第一個公開發(fā)行版發(fā)行于 1991 年。 特點 易于學習:Python ...

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

    摘要:同樣的方法名稱,參數(shù)列表,返回類型,拋出的異?;蛘呤歉割悞伋龅漠惓5淖宇?,子類重寫一個。使用方法過載的目的,根據(jù)調用時的實參表與形參表,來選擇對應的方法體的。 問題出現(xiàn): 即使對于一個經(jīng)驗豐富的開發(fā)人員來說,方法重載和方法覆蓋的區(qū)別都能讓他猶豫一下, 對于新手來說,經(jīng)常容易弄混淆。 有沒有比較深入淺出的理解方式,能讓人過目不忘,用起來還能有條件反射般的速度呢? 其他人是怎么做的: 寫...

    clasnake 評論0 收藏0

發(fā)表評論

0條評論

劉永祥

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<