版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第Python錯誤+異常+模塊總結(jié)目錄錯誤和異常語法錯誤異常異常處理拋出異常模塊前言:
本篇主要講兩方面,錯誤和異常以及模塊。在編程時遇見錯誤信息在所難免,Python中會也有很多種錯誤信息,常見的兩種就是語法錯誤和邏輯錯誤,邏輯錯誤的種類有很多,占據(jù)了異常中大部分位置,下面就開始介紹一下這兩個概念的相關(guān)知識。
錯誤和異常
語法錯誤
語法錯誤英文表示為SyntaxError,后面會跟著一些關(guān)于錯誤的解釋信息,方便你查找語句中的bug,如下:
In
[5]:
print('naitangmao)
File
"ipython-input-5-d5b793a8884b",
line
1
print('naitangmao)
^
SyntaxError:
EOL
while
scanning
string
literal
語法錯誤顧名思義就是你的代碼語句寫錯了,比如上面這個語句的錯誤就是少了一個引號。發(fā)生錯誤后,解釋器會給出文件的名字和錯誤行號,以及在錯誤行下面有一個^,這個提示你代碼出錯的位置,一般會位于箭頭前面,這些提示會便于編寫者盡快找出錯誤。
異常
有的時候一行代碼在語法上可能沒有什么錯誤,但是執(zhí)行的時候解釋器也會報紅,這種錯誤信息可以稱為異常,和語法錯誤相比,異常的種類更多也更加常見。
舉兩個簡單的例子:
In
[6]:
print(1/0)
---------------------------------------------------------------------------
ZeroDivisionError
Traceback
(most
recent
call
last)
ipython-input-6-2fc232d1511a
in
module
----
1
print(1/0)
ZeroDivisionError:
division
by
zero
都知道0是不能作為分母出現(xiàn)的,所以Python就會給出一個ZeroDivisionError,并提醒你這是一個零除錯誤。
In
[9]:
1+'1'
---------------------------------------------------------------------------
TypeError
Traceback
(most
recent
call
last)
ipython-input-9-d3bd1e37a107
in
module
----
1
1+'1'
TypeError:
unsupported
operand
type(s)
for
+:
'int'
and
'str'
整形與字符串之間不存在加法運算,解釋器分析出后會給出一個TypeError,這是一個類型錯誤,并且在后面給出錯誤的解釋。
異常處理
對于Python解釋器而言,如果一段程序中某個部分出現(xiàn)了異常,那么其后面的代碼將不會被運行,但Python中有方法可以對異常進(jìn)行處理,讓異常不報紅,進(jìn)而幫助整個程序完成運行,這種行為稱作捕獲異常,以try...except語句組合實現(xiàn)。
In
[11]:
a
=
1;b
=
'2'
In
[12]:
try:
...:
print(a+b)
...:
except
TypeError:
...:
print('類型錯誤!')
類型錯誤!
捕獲異常實現(xiàn)的過程:
1.執(zhí)行try和except關(guān)鍵字之間的部分2.如果沒有異常發(fā)生,except子句在try語句執(zhí)行完畢后就被忽略了。3.如果在try子句執(zhí)行過程中發(fā)生了異常,那么該子句其余的部分就會被忽略。如果異常匹配于except關(guān)鍵字后面指定的異常類型,就執(zhí)行對應(yīng)的except子句。然后繼續(xù)執(zhí)行try/except語句之后的代碼。4.如果發(fā)生了一個異常,在except子句中沒有與之匹配的分支,它就會傳遞到上一級try語句中。如果最終仍找不到對應(yīng)的處理語句,它就成為一個未處理異常,終止程序運行,顯示提示信息。
為了避免第4條情況產(chǎn)生,在except語句中可以使用所有異常的父類Exception,這樣就囊括了所有異??赡馨l(fā)生的狀況:
In
[15]:
try:
...:
print(a+b)
...:
except
Exception
as
e:
...:
print(e)
unsupported
operand
type(s)
for
+:
'int'
and
'str'
拋出異常
利用raise語句可以主動拋出一個異常,但拋出的異常必須是要繼承于Exception的異常類或者異常示例。
In
[16]:
raise
NameError('naitangmao')
---------------------------------------------------------------------------
NameError
Traceback
(most
recent
call
last)
ipython-input-16-b751158801b2
in
module
----
1
raise
NameError('naitangmao')
NameError:
naitangmao
除此上面介紹之外,用戶還可以根據(jù)自己的需求自己定義異常,不再過多介紹,建議掌握的部分是每種異常出現(xiàn)的原因以及異常處理的方法。
模塊
第二部分就是模塊,我們有時可能會在不同文件之間利用同一個函數(shù),笨一點的做法就是copy來copy去,Python提供了一個機(jī)制可以在將一個文件中的內(nèi)容導(dǎo)入另一個文件中使用,這樣的文件就可以稱為模塊,需要注意的是并不是任何一個文件都可以當(dāng)做模塊,而必須是包含Python定義和聲明的文件。
舉一個簡單的小例子幫助理解上面這段話,首先可以創(chuàng)建一個odd_num.py文件,然后這個文件中只有一個函數(shù),功能是實現(xiàn)過濾掉一個范圍內(nèi)的偶數(shù):
In
[18]:
def
odd(n):
...:
result
=
[]
...:
for
i
in
range(n):
...:
if
i
%
2
!=
0:
...:
result.append(i)
...:
return
result
然后我們可以在另一個文件中導(dǎo)入這個模塊,如果我們想使用這個函數(shù)的話,就可以通過模塊名.函數(shù)名的方法調(diào)用該函數(shù),如下:
In
[20]:
import
odd_num
In
[21]:
odd_num.odd(20)
Out[21]:
[1,
3,
5,
7,
9,
11,
13,
15,
17,
19]
如果你只想用一個模塊中的某個子模塊,那么在導(dǎo)入時就可以指明需要導(dǎo)入的部分,這樣子模塊就可以單獨使用,不必在以模塊名.函數(shù)名的形式:
In
[22]:
from
odd_num
import
odd
In
[23]:
odd(20)
Out[23]:
[1,
3,
5,
7,
9,
11,
13,
15,
17,
19]
如果你還想偷懶的話,可以利用*的形式導(dǎo)入,這種寫法是導(dǎo)入一個模塊中的所有子模塊:
In
[24]:
from
odd_num
import
*
這種方法往往是不被推薦的,因為會讓代碼的可讀性變差。
如果你有很多自定義的模塊,為了更加規(guī)范、易找,那么你就可以將這些模塊存入一個包中,需要注意的是,這個包中比如要有一個名為__init__.py的文件,這個文件可以為空但必須存在,然后導(dǎo)入包中模塊的方式就是包名.模塊名。
Python本身也有自帶的模塊庫,有一部分模塊是內(nèi)置于解釋器之中,然后用戶可以直接訪問這類模塊的接口,很大程度上提高了效率,比如time、sys等等。如果你對于一個模塊比較陌生,你可以利用dir()函數(shù)搜索某個模塊的定義,返回的結(jié)果是一個列表,其中包括模塊內(nèi)的方法、可供調(diào)用的接口等等。
In
[24]:dir(time)
Out[24]:['_STRUCT_TM_ITEMS',
'__doc__',
'__loader__','__name__','__package__','__spec__','altzone','asctime','ctime','daylight',
'get_clock_info','gmtime','localtime','mktime','monotonic','monotonic_ns','perf_c
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中職通信技術(shù)(移動通信基礎(chǔ))試題及答案
- 2025年高職中草藥栽培與加工技術(shù)(中藥炮制基礎(chǔ))試題及答案
- 2025年大學(xué)(麻醉學(xué))麻醉心理學(xué)試題及答案
- 2025年中職航空服務(wù)(客艙服務(wù)實務(wù))試題及答案
- 2025年中職(煙草栽培)煙草大田移栽階段測試試題及答案
- 2025年大學(xué)醫(yī)學(xué)影像技術(shù)(CT影像診斷)試題及答案
- 2025年中職(農(nóng)產(chǎn)品營銷與儲運)農(nóng)產(chǎn)品儲存試題及答案
- 2025年中職物流類(物流故障處理)試題及答案
- 2025年大學(xué)化學(xué)工程與工藝(化工系統(tǒng)工程)試題及答案
- 2025年中職人工智能類(人工智能基礎(chǔ)常識)試題及答案
- 輸變電工程標(biāo)準(zhǔn)化施工作業(yè)卡變電工程
- MSA-測量系統(tǒng)分析模板
- 《國共合作與北伐戰(zhàn)爭》優(yōu)課一等獎?wù)n件
- 中國旅游客源國概況-第二章-中國海外客源市場分
- 《分散系》說課課件
- 中小學(xué)綜合實踐活動課程指導(dǎo)綱要
- 加油站綜合應(yīng)急預(yù)案演練記錄
- YY/T 1183-2010酶聯(lián)免疫吸附法檢測試劑(盒)
- YY/T 0729.3-2009組織粘合劑粘接性能試驗方法第3部分:拉伸強(qiáng)度
- GB/T 5187-2008銅及銅合金箔材
- 農(nóng)民工討薪突發(fā)事件應(yīng)急預(yù)案
評論
0/150
提交評論