python異常處理與導入模塊與導入包


一.什么是異常?

異常即是一個事件,該事件會在程序執行過程中發生,影響了程序的正常執行。

一般情況下,在Python無法正常處理程序時就會發生一個異常。

異常是Python對象,表示一個錯誤。

當Python腳本發生異常時我們需要捕獲處理它,否則程序會終止執行

注:語法上的錯誤跟異常處理無關,必須在程序運行前就修正

二.異常處理

捕捉異常可以使用try/except語句。

try/except語句用來檢測try語句塊中的錯誤,從而讓except語句捕獲異常信息並處理。

如果你不想在異常發生時結束你的程序,只需在try里捕獲它。

語法:

if..else...處理

num1=input('>>: ') #輸入一個字符串試試 if num1.isdigit(): int(num1) #我們的正統程序放到了這里,其余的都屬於異常處理范疇 elif num1.isspace(): print('輸入的是空格,就執行我這里的邏輯') elif len(num1) == 0: print('輸入的是空,就執行我這里的邏輯') else: print('其他情情況,執行我這里的邏輯')

1.if判斷式的異常處理只能針對某一段代碼,對於不同的代碼段的相同類型的錯誤你需要寫重復的if來進行處理。

2.在你的程序中頻繁的寫與程序本身無關,與異常處理有關的if,可讀性極其的差。

以下為簡單的try....except...else的語法:

try:
<語句>        #運行別的代碼
except <名字>:
<語句>        #如果在try部份引發了'name'異常
except <名字>,<數據>:
<語句>        #如果引發了'name'異常,獲得附加的數據
else:
<語句>        #如果沒有異常發生

#ry的工作原理是,當開始一個try語句后,python就在當前程序的上下文中作標記,這樣當異常出現時就可以回到這里,try子句先執行,接下來會發生什么依賴於執行時是否出現異常。
  1.  如果當try后的語句執行時發生異常,python就跳回到try並執行第一個匹配該異常的except子句,異常處理完畢,控制流就通過整個try語句(除非在處理異常時又引發新的異常)。
  2. 如果在try后的語句里發生了異常,卻沒有匹配的except子句,異常將被遞交到上層的try,或者到程序的最上層(這樣將結束程序,並打印缺省的出錯信息)。
  3. 如果在try子句執行時沒有發生異常,python將執行else語句后的語句(如果有else的話),然后控制流通過整個try語句。

萬能的異常捕捉

 s1 = 'hello'
 try:
     int(s1)
 except Exception as e:
     print(e)

捕捉異常的幾種方式

s1 = 'hello'
try:
    int(s1)
except IndexError as e:
    print(e)
except KeyError as e:
    print(e)
except ValueError as e:
    print(e)

多分支
s1 = 'hello'
try:
    int(s1)
except IndexError as e:
    print(e)
except KeyError as e:
    print(e)
except ValueError as e:
    print(e)
except Exception as e:
    print(e)
s1 = 'hello'
try:
    int(s1)
except IndexError as e:
    print(e)
except KeyError as e:
    print(e)
except ValueError as e:
    print(e)
#except Exception as e:
#    print(e)
else:
    print('try內代碼塊沒有異常則執行我')
finally:
    print('無論異常與否,都會執行該模塊,通常是進行清理工作')
#_*_coding:utf-8_*_
__author__ = 'Linhaifeng'

try:
    raise TypeError('類型錯誤')
except Exception as e:
    print(e)
#_*_coding:utf-8_*_
__author__ = 'Linhaifeng'

class EgonException(BaseException):
    def __init__(self,msg):
        self.msg=msg
    def __str__(self):
        return self.msg

try:
    raise EgonException('類型錯誤')
except EgonException as e:
    print(e)
使用try..except的方式

1:把錯誤處理和真正的工作分開來
2:代碼更易組織,更清晰,復雜的工作任務更容易實現;
3:毫無疑問,更安全了,不至於由於一些小的疏忽而使程序意外崩潰了;

#常見異常表

 

 注:try...except應該盡量少用,因為它本身就是你附加給你的程序的一種異常處理的邏輯,加多了會使代碼可讀性變得非常差

 

Python 模塊

一個模塊就是一個包含了python定義和聲明的文件,文件名就是模塊名字加上.py的后綴。如果你退出python解釋器然后重新進入,那么你之前定義的函數或者變量都將丟失,因此我們通常將程序寫到文件中以便永久保存下來,需要時就通過python test.py方式去執行,此時test.py被稱為腳本script。

    隨着程序的發展,功能越來越多,為了方便管理,我們通常將程序分成一個個的文件,這樣做程序的結構更清晰,方便管理。這時我們不僅僅可以把這些文件當做腳本去執行,還可以把他們當做模塊來導入到其他的模塊中,實現了功能的重復利用

3.如何使用模塊?

import引入

注:引入同一文件多次,只執行一次

 

#spam.py
print('from the spam.py')

money=1000

def read1():
    print('spam->read1->money',1000)

def read2():
    print('spam->read2 calling read')
    read1()

def change():
    global money
    money=0
#test.py
import spam #只在第一次導入時才執行spam.py內代碼,此處的顯式效果是只打印一次'from the spam.py',當然其他的頂級代碼也都被執行了,只不過沒有顯示效果.
import spam
import spam
import spam

'''
執行結果:
from the spam.py
'''

模塊與命名空間

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM