<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>

          while、for、try except語句中的else

          共 2232字,需瀏覽 5分鐘

           ·

          2021-02-24 19:43

          Python中的else是基礎(chǔ)的語句,它的兩種使用形式是:
          if?condition:
          ????doSomeThings
          else:
          ????doAnthorThings
          以及
          if?condition1:
          ????do1
          elif?condition2:
          ????do2
          else:
          ????doOtherThings
          這兩個用法理解起來沒有問題。下面要看的是for,while循環(huán)和try異常處理語句中的else的用法。

          一、for,while循環(huán)中的else

          for,while循環(huán)中,else用于循環(huán)正常結(jié)束,且循環(huán)體中沒有break、return和異常拋出,則執(zhí)行else語句塊中的內(nèi)容。 例如,我們判斷列表ls中是否全是奇數(shù)。普通情況下,需要引入一個標(biāo)志變量allOdd,指示所有變量都是奇數(shù),有偶數(shù)出現(xiàn)則將此變量設(shè)為False。寫法如下:
          ls?=?[1,?3,?5,?7,?9]

          allOdd?=?True

          for?i?in?ls:
          ????if?i?%?2?==?0:
          ????????allOdd?=?False
          ????????break

          if?allOdd:
          ????print('list?ls?%r?constructed?by?only?odd?number'?%?ls)
          else:
          ????print('list?ls?%r?**?is\'t?**?constructed?by?only?odd?number'?%?ls)
          利用else指示循環(huán)正常結(jié)束的功能,采用for循環(huán)或者while循環(huán)加else的寫法如下:
          for?i?in?ls:
          ????if?i?%2?==?0:
          ????????print('list?ls?%r?**?is\'t?**?constructed?by?only?odd?number'?%?ls)
          ????????break
          else:
          ????print('
          list?ls?%r?constructed?by?only?odd?number'?%?ls)
          可見,for循環(huán)使用else語句之后,節(jié)省了指示性變量allOdd,以及相應(yīng)的處理語句。整個程序語義上更簡潔、邏輯上更順暢。

          二、try異常處理語句中的else

          try except異常捕獲處理語句中,else定義用于沒有異常出現(xiàn)時執(zhí)行的部分。 例如,當(dāng)我們處理有可能導(dǎo)致異常的計算時,else語句定義的部分,可以確保沒有異常發(fā)生,得到了正確計算結(jié)果。例子是計算簡單的除法。普通寫法:
          try:
          ????result?=?a/b
          ????print(result)
          except?TypeError:
          ????print('輸入數(shù)字')
          except?ZeroDivisionError:
          ????print('被除數(shù)不能為零')
          采用else語句時的寫法:
          try:
          ????result?=?a/b
          except?TypeError:
          ????print('輸入數(shù)字')
          except?ZeroDivisionError:
          ????print('被除數(shù)不能為零')
          else:?
          ????print('計算結(jié)果%r'%result)
          也就是說,try except else finally分別對應(yīng)如下關(guān)系:
          • try ? ? ? 可能拋出異常的語句。
          • except ? ?捕獲異常,處理異常。
          • else ? ? ?無異常,明確得知try語句中無異常。而不是這兩種情況:有異常;有異常但處理了。
          • finally ? 有或無異常,都執(zhí)行的語句,一般為關(guān)閉、清理工作。
          else語句在try except句法中最主要的功能,是明確指出了沒有異常出現(xiàn)時才執(zhí)行的語句塊。與出現(xiàn)異常,或者出現(xiàn)異常并且處理了這兩種情況是分開的。這個語法塊是在沒有異常出現(xiàn)時執(zhí)行的,保證了環(huán)境的正確性。

          三、簡單總結(jié)

          • for while循環(huán)中,else用于循環(huán)正常結(jié)束,且循環(huán)體中沒有break、return或異常拋出,則執(zhí)行else語句塊中的內(nèi)容。

          • try except異常捕獲處理語句中,else是定義用于沒有異常出現(xiàn)時執(zhí)行的部分。

          • 不同于if else 語句,以上兩種else用法看起來有些復(fù)雜。簡單理解,可以把else語句塊當(dāng)做語句主體中“沒有幺蛾子“時執(zhí)行的語句塊。這樣就可以簡單理解了else的兩種用法了。

          • 許多人反對在此處復(fù)用else關(guān)鍵字來表達(dá)除外情況,認(rèn)為then關(guān)鍵字或許更好(luciano ramalho《fluent python》),更甚者主張遵循“最小驚訝原則”,即在for和while語境里不要用else關(guān)鍵字,以免它給人帶來疑惑(Brett Slatkin《Effective Python》)。筆者認(rèn)為,如果把兩處else統(tǒng)一理解為“沒有出現(xiàn)問題,沒有幺蛾子”,那么此時的else語法會變成一個很有用的技巧。

          作者:鞏慶奎,大奎,對計算機(jī)、電子信息工程感興趣。gongqingkui at 126.com

          贊 賞 作 者



          更多閱讀



          2020 年最佳流行 Python 庫 Top 10


          2020 Python中文社區(qū)熱門文章 Top 10


          5分鐘快速掌握 Python 定時任務(wù)框架

          特別推薦




          點(diǎn)擊下方閱讀原文加入社區(qū)會員

          瀏覽 33
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <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>
                  97超碰免费 | 日韩中文字幕熟妇人妻 | 日本免费观看入网视频免费观看 | 免费看男女日逼吧 | 99国产免费 |