日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
while、for、tryexcept語(yǔ)句中的else

 Python中的else是基礎(chǔ)的語(yǔ)句,它的兩種使用形式是: 

創(chuàng)新互聯(lián)是一家業(yè)務(wù)范圍包括IDC托管業(yè)務(wù),網(wǎng)頁(yè)空間、主機(jī)租用、主機(jī)托管,四川、重慶、廣東電信服務(wù)器租用,遂寧服務(wù)器托管,成都網(wǎng)通服務(wù)器托管,成都服務(wù)器租用,業(yè)務(wù)范圍遍及中國(guó)大陸、港澳臺(tái)以及歐美等多個(gè)國(guó)家及地區(qū)的互聯(lián)網(wǎng)數(shù)據(jù)服務(wù)公司。

 
 
 
  1. if condition:  
  2.     doSomeThings  
  3. else:  
  4.     doAnthorThings 

以及 

 
 
 
  1. if condition1:  
  2.     do1  
  3. elif condition2:  
  4.     do2  
  5. else:  
  6.     doOtherThings 

這兩個(gè)用法理解起來(lái)沒(méi)有問(wèn)題。下面要看的是for,while循環(huán)和try異常處理語(yǔ)句中的else的用法。

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

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

 
 
 
  1. ls = [1, 3, 5, 7, 9]  
  2. allOdd = True  
  3. for i in ls:  
  4.     if i % 2 == 0:  
  5.         allOdd = False  
  6.         break  
  7. if allOdd:  
  8.     print('list ls %r constructed by only odd number' % ls)  
  9. else:  
  10.     print('list ls %r ** is\'t ** constructed by only odd number' % ls) 

利用else指示循環(huán)正常結(jié)束的功能,采用for循環(huán)或者while循環(huán)加else的寫法如下: 

 
 
 
  1. for i in ls:  
  2.     if i %2 == 0:  
  3.         print('list ls %r ** is\'t ** constructed by only odd number' % ls)  
  4.         break  
  5. else:  
  6.     print('list ls %r constructed by only odd number' % ls) 

可見,for循環(huán)使用else語(yǔ)句之后,節(jié)省了指示性變量allOdd,以及相應(yīng)的處理語(yǔ)句。整個(gè)程序語(yǔ)義上更簡(jiǎn)潔、邏輯上更順暢。

二、try異常處理語(yǔ)句中的else

try except異常捕獲處理語(yǔ)句中,else定義用于沒(méi)有異常出現(xiàn)時(shí)執(zhí)行的部分。 例如,當(dāng)我們處理有可能導(dǎo)致異常的計(jì)算時(shí),else語(yǔ)句定義的部分,可以確保沒(méi)有異常發(fā)生,得到了正確計(jì)算結(jié)果。例子是計(jì)算簡(jiǎn)單的除法。普通寫法: 

 
 
 
  1. try:  
  2.     result = a/b  
  3.     print(result)  
  4. except TypeError:  
  5.     print('輸入數(shù)字')  
  6. except ZeroDivisionError:  
  7.     print('被除數(shù)不能為零') 

采用else語(yǔ)句時(shí)的寫法: 

 
 
 
  1. try:  
  2.     result = a/b  
  3. except TypeError:  
  4.     print('輸入數(shù)字')  
  5. except ZeroDivisionError:  
  6.     print('被除數(shù)不能為零')  
  7. else:   
  8.     print('計(jì)算結(jié)果%r'%result) 

也就是說(shuō),try except else finally分別對(duì)應(yīng)如下關(guān)系:

  •  try       可能拋出異常的語(yǔ)句。
  •  except    捕獲異常,處理異常。
  •  else      無(wú)異常,明確得知try語(yǔ)句中無(wú)異常。而不是這兩種情況:有異常;有異常但處理了。
  •  finally   有或無(wú)異常,都執(zhí)行的語(yǔ)句,一般為關(guān)閉、清理工作。

else語(yǔ)句在try except句法中最主要的功能,是明確指出了沒(méi)有異常出現(xiàn)時(shí)才執(zhí)行的語(yǔ)句塊。與出現(xiàn)異常,或者出現(xiàn)異常并且處理了這兩種情況是分開的。這個(gè)語(yǔ)法塊是在沒(méi)有異常出現(xiàn)時(shí)執(zhí)行的,保證了環(huán)境的正確性。

三、簡(jiǎn)單總結(jié)

  •  for while循環(huán)中,else用于循環(huán)正常結(jié)束,且循環(huán)體中沒(méi)有break、return或異常拋出,則執(zhí)行else語(yǔ)句塊中的內(nèi)容。
  •  try except異常捕獲處理語(yǔ)句中,else是定義用于沒(méi)有異常出現(xiàn)時(shí)執(zhí)行的部分。
  •  不同于if else 語(yǔ)句,以上兩種else用法看起來(lái)有些復(fù)雜。簡(jiǎn)單理解,可以把else語(yǔ)句塊當(dāng)做語(yǔ)句主體中“沒(méi)有幺蛾子“時(shí)執(zhí)行的語(yǔ)句塊。這樣就可以簡(jiǎn)單理解了else的兩種用法了。
  •  許多人反對(duì)在此處復(fù)用else關(guān)鍵字來(lái)表達(dá)除外情況,認(rèn)為then關(guān)鍵字或許更好(luciano ramalho《fluent python》),更甚者主張遵循“最小驚訝原則”,即在for和while語(yǔ)境里不要用else關(guān)鍵字,以免它給人帶來(lái)疑惑(Brett Slatkin《Effective Python》)。筆者認(rèn)為,如果把兩處else統(tǒng)一理解為“沒(méi)有出現(xiàn)問(wèn)題,沒(méi)有幺蛾子”,那么此時(shí)的else語(yǔ)法會(huì)變成一個(gè)很有用的技巧。 

新聞標(biāo)題:while、for、tryexcept語(yǔ)句中的else
本文鏈接:http://www.dlmjj.cn/article/cdoijgh.html