嘿客免費(fèi)網(wǎng)站建設(shè)百度指數(shù)免費(fèi)查詢?nèi)肟?/h1>
7.1 錯(cuò)誤(errors)
由于Python代碼通常是人類編寫的,那么無論代碼是在解釋之前還是運(yùn)行之后,或多或少總會(huì)出現(xiàn)一些問題。
在Python代碼解釋時(shí)遇到的問題稱為錯(cuò)誤
,通常是語法和縮進(jìn)問題導(dǎo)致的,這些錯(cuò)誤會(huì)導(dǎo)致代碼無法通過解釋器的解釋階段,代碼也就無法執(zhí)行。
7.1.1 語法錯(cuò)誤(syntax errors)
當(dāng)Python代碼不符合Python的語法,在解釋器進(jìn)行解釋時(shí)就會(huì)檢測(cè)到語法錯(cuò)誤
并指出錯(cuò)誤行,Python會(huì)在檢測(cè)到錯(cuò)誤的位置前面顯示一個(gè)小箭頭
。語法錯(cuò)誤就是由箭頭
前面的標(biāo)記代碼引起的。
引起語法錯(cuò)誤的幾種情況
- 遺漏了標(biāo)點(diǎn)符號(hào);比如:漏了冒號(hào)等
- 混用中英文符號(hào);
- 關(guān)鍵字拼寫錯(cuò)誤或遺漏;比如:while寫成了whlie等;
- 變量名或函數(shù)名使用了關(guān)鍵字;比如:while = 1;
- 檢查到不完整的字符串等;比如:'我是張三
語法錯(cuò)誤(syntax errors)是初學(xué)者最容易犯的錯(cuò)誤,簡(jiǎn)單來說就是代碼不符合Python的基本語法規(guī)范而導(dǎo)致的問題。
語法錯(cuò)誤示例1
>>> print('我是一只小小鳥)
File "E:\BaiduNetdiskWorkspace\FrbPythonFiles\study\main.py", line 1print('我是一只小小鳥)^
SyntaxError: unterminated string literal (detected at line 1)
如上,在Python語法中,字符串是由一對(duì)引號(hào)包住的,上面的print語句中只有一個(gè)單引號(hào),不符合Python的語法,于是報(bào)錯(cuò)了(SyntaxError),并且告訴了我們line 1(第一行)有問題。
語法錯(cuò)誤示例2
>>> print(1)print(2)
File "E:\BaiduNetdiskWorkspace\FrbPythonFiles\study\main.py", line 1print(1)print(2)^^^^^
SyntaxError: invalid syntax
同一行中寫了兩條語句,并且沒有通過;
分隔,于是報(bào)語法錯(cuò)誤了。
語法錯(cuò)誤示例3
for i in range(10)print(i)
File "E:\BaiduNetdiskWorkspace\FrbPythonFiles\study\main.py", line 1for i in range(10)^
SyntaxError: expected ‘:’
range(10)后面沒有添加:
如果是使用Pycharm等專門的IDE來編寫Python程序,那么Pycharm會(huì)在代碼執(zhí)行前通過紅色波浪線的形式告知用戶并給出提示。如下圖:
7.1.2 縮進(jìn)錯(cuò)誤(IndentationError)
縮進(jìn)錯(cuò)誤
,顧名思義,就是在編寫代碼的時(shí)候該縮進(jìn)的時(shí)候沒有縮進(jìn),不應(yīng)該縮進(jìn)的地方又縮進(jìn)了,又或者需要縮進(jìn)4個(gè)空格,開發(fā)者只縮進(jìn)了2個(gè)空格,或者Tab縮進(jìn)和空格縮進(jìn)混用都有可能會(huì)導(dǎo)致這個(gè)縮進(jìn)錯(cuò)誤。
在Python中,冒號(hào)下面的縮進(jìn)會(huì)幫助程序區(qū)分代碼之間的層次,這些不同的層次代表了代碼運(yùn)行的邏輯及先后順序。但如果在需要縮進(jìn)的語句下面沒有使用正確的縮進(jìn)層級(jí),甚至沒有使用縮進(jìn),程序就會(huì)報(bào)錯(cuò)。
縮進(jìn)錯(cuò)誤示例
print('我是一只小小鳥')age = 10
File “E:\BaiduNetdiskWorkspace\FrbPythonFiles\study\main.py”, line 2
age = 10
IndentationError: unexpected indent
age = 10應(yīng)當(dāng)和第一條命令是同屬于一個(gè)邏輯結(jié)構(gòu)中,是不需要縮進(jìn)的,但是如果縮進(jìn)了,則會(huì)報(bào)錯(cuò):IndentationError。