其他語言中else只可以和if進行組合,也就是我們常見的if...else,但是python為else賦予了新的聲明。它可以和while 、for 、try一起串聯使用。
下面我們介紹和while串聯使用時的效果。
count=0 while count>12: if (11>0): print("成立") break count+=1 else: print('不成立') #當while條件不成立,直接跳到該處輸出
for 循環和while用法一樣的
def forelse(): c = [1,2] for i in c: print(i) else: print("輸出") #當for循環結束會輸出該語句
try 的用法
def tryelse(): try: sum = 1+1 except TypeError as reason: print("報錯") else: print("到我這里了") #當try塊中的語句正常執行完畢會執行該方法。
with ...:用法
# 第一種寫法 def withas(): try: f = open("文字.txt") print(f.read()) f.close() except OSError as reason: print("讀取錯誤") else: print("完成") # 第二種寫法 with,一定不要忘記 : 哦 def withas2(): try: with open("文字.txt") as f: print(f.read()) f.close() except OSError as reason: print("讀取錯誤") else: print("完成")
為什么會用到with,是因為有的時候我們可能在使用open(file)打開一個文件的時候,可能這個文件並不存在,那么這個時候就會報錯,而我們可能會將這種方法卸載一個try except finally這樣的語句里,並且在finally里邊可能添加了f.close()這樣的語句,但是我們這個時候並沒有打開一個f的文件,因為這個文件並不存在,所以沒有必要關閉這個文件。這時候我們就用到了with。
錯誤代碼展示:
def withas1(): try: f = open("文字1.txt") #該文件不存在哦 print(f.read()) except OSError as reason: print("讀取錯誤") finally: f.close() #--------------錯誤輸出 讀取錯誤 Traceback (most recent call last): File "E:/python/day-2/whileelse.py", line 46, in <module> withas1() File "E:/python/day-2/whileelse.py", line 44, in withas1 f.close() UnboundLocalError: local variable 'f' referenced before assignment >>>
從錯誤輸出我們就可以看到,報的錯誤是局部變量錯誤,說的就是f並不存在,也就是沒有打開這個文件。