<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Python入門系列35 - 那些年,走過的 None 之坑

          共 2354字,需瀏覽 5分鐘

           ·

          2020-02-10 23:22

          Python入門系列35

          94a0180e5f2747b2cef1734ae86edfd8.webp

          那些年,走過的 None 之坑


          本篇閱讀時間約為 4 分鐘。





          1

          前言


          后臺有個同學(xué)點播了一首非常好聽的歌曲,筆者聽完后的感想,嗯!歌曲比較襯托學(xué)習(xí)氣氛,靜靜的一首歌送給大家。


          今天的主角是 Python 中的 None,那些年,我們一起走過的 None 之坑。


          說到 None ,與之對應(yīng)的中文,第一個想到的就是空。在任何程序中,總會有著空伴你左右,下面就來聊一聊 Python 中的空!


          2

          Python 中的 None


          一提到 None,是不是有人會想到我們平時的空字符串,空列表。又或者是 0 , False 這樣的值?在寫 if 判斷時,我們想要判斷一個字符串是不是空,你會不會這樣寫:


          a = ''if a is None:    print('a 字符串 is None 返回結(jié)果是 True')


          猜一猜輸出結(jié)果會打印嗎?


          如果你覺得會打印輸出的同學(xué),怕是要打臉了.....請務(wù)必好好看下今天這篇 None 的技巧文章!因為在 Python 中 None 并不等于以上說的這些!


          不等于的前提下,是從 Python 的 id值(內(nèi)存地址),類型,值 點出發(fā)考慮的,讓我們場景帶入看看....


          3

          場景帶入與代碼實現(xiàn)


          動手實踐是最好的證明方法,寫一段代碼來驗證下!


          需求場景很簡單,有個空字符串a(chǎn),有個空列表b,還有個等于0的c,最后再來一個等于 False 的d。


          先來驗證值相等不相等,不知道大家還記不記得如何判斷值相不相等呢?之前在 Python 小課堂基礎(chǔ)章節(jié)介紹過,使用 == 即可判斷值是否相等,返回的結(jié)果是個 bool 類型的結(jié)果,True 說明值相等,F(xiàn)alse 說明值不相等


          再來使用 is?驗證內(nèi)存地址,類型,值是否一致。


          忘了的回顧文章:python小課堂12 - 運算符篇


          具體場景代碼如下:

          a = ''b = []c = 0d = False
          # 值是否相等print(a == None)print(b == None)print(c == None)print(d == None)
          # id值(內(nèi)存地址)是否相等print(a is None)print(b is None)print(c is None)print(d?is?None)


          ec15db0b156b1e08a47c1930b684212f.webp


          打印結(jié)果全部都是 False,說明不論是上面試的哪種空類型,都不等于 None,不論使用 == 或者 is 來進行判斷。


          4

          None與各種空值不等的原因


          要說 None 與上述各種空值不等的原因,其實也很簡單。大家是否還記得一句話,在 Python 中,一切萬物皆為對象!這意味著,None 自身就是個對象,曾經(jīng)在小課堂的對象篇介紹過,對象可以理解為類型。


          具體回顧文章:python小課堂18 - 面向?qū)ο笃ㄒ唬?/a>


          使用 type() 內(nèi)置函數(shù),可以看到一個對象的類型是什么。


          270efffa3523ebcd728ad56f02f63f1f.webp


          打印結(jié)果為 NoneType ,這邊是 None 關(guān)鍵字的類型了。所以使用 is 判斷 空字符串,空列表等 與 None 是否相等,單從類型上來說,返回結(jié)果就是 False 了!


          5

          在 if 判斷中,None 踩過的坑


          來,請大家看一個深坑,下面這段代碼從邏輯思維上來講是有些繞的,不過筆者已經(jīng)將正確的邏輯用中文的形式寫在了 print 打印結(jié)果中,思考一下,看看會打印出什么呢?


          坑一,a變量以函數(shù)進行返回 None :

          def?function_a():    return None

          a = function_a()
          # not + 變量 進行判空, if not ,if not a: print('if not a , 返回結(jié)果是 True! 中文意思是如果 a 是空值!')else: print('if not a , 返回結(jié)果是 False! 中文意思是如果 a 是不空值!')
          # 變量 is None 進行判空if a is None: print('if a is None 返回結(jié)果是 True! 中文意思是如果 a 是空值!')else: print('if a is None 返回結(jié)果是 False! 中文意思是如果 a 是不空值!')


          坑二,變量 a 直接賦值空字符串:

          a = ''# not + 變量 進行判空, if not ,if not a:    print('if not a , 返回結(jié)果是 True! 中文意思是如果 a 是空值!')else:    print('if not a , 返回結(jié)果是 False! 中文意思是如果 a 是不空值!')
          # 變量 is None 進行判空if a is None: print('if a is None 返回結(jié)果是 True! 中文意思是如果 a 是空值!')else:????print('if a is None 返回結(jié)果是 False! 中文意思是如果 a 是不空值!')


          上面這兩段代碼,希望大家可以在留言區(qū)進行自己的看法輸出,歡迎留言,如果你真的看懂了本文的介紹,相信這兩段代碼很容易得出答案!


          PS:多說一句,輸出是一個動腦子的過程,單單是看文章,不一定是真的看明白了,好多人關(guān)注了系列文章,相信都是想去主動學(xué)習(xí)的讀者,學(xué)習(xí)如何牢固,輸入->思考->輸出。


          6

          Pythonic 寫法式判空


          提倡 Pythonic ,說白了就是簡潔性的 Python 代碼。判空其實很容易,如下:


          a = ''if a:    print('a 是有值的!非空')else:    print('a 是空值!')


          c75fbd3211445600009fdca67a66240d.webp


          結(jié)論:在 Python 中,多數(shù)以 "if 變量:"?形式進行判空操作!


          if 變量:


          至此完!

          7b1c5a50b4343c8308ef01efed7393b4.webp你點的每個贊,我都認真當(dāng)成了喜歡
          瀏覽 63
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  日韩免费视频在线观看 | 成人精品天堂一区二区三区五区 | 免费 无码 国产在线53 | 丁香五月天激情 | 亚洲综合精品久久婷婷无码专区 |