webstorm里stylus代码报错_发生甚莫事了?我的程序为啥又报错了!
點擊上方Python知識圈,設為星標
回復100獲取100題PDF
閱讀文本大概需要 6?分鐘
近期精彩文章:Python100例(附PDF下載地址)作者:pk哥
原創(chuàng)公眾號:Python知識圈
剛才在技術群里有個伙伴艾特我,我說發(fā)生甚么事了?給我發(fā)了幾張截圖,我一看,哦,原來是運行程序報錯了。我說你不會看報錯信息么,這不好用,他不服氣,我說我教你們讀懂報錯信息,這個有用,這是化勁兒。
言歸正傳,運行程序出錯或者沒有出現(xiàn)我們想要的結(jié)果,我們每天都會遇到這樣的問題,遇到問題沒關系,重要的是我們知道怎么找出問題的根源,然后解決問題。
有報錯信息
運行程序,啪,很快啊,控制臺出現(xiàn)了報錯信息,這時我們需要讀懂報錯信息,有些伙伴發(fā)到群里的報錯信息很明顯了,可是他卻看不懂。所以 pk哥給大家總結(jié)下常見的報錯場景。
不要怕看報錯信息,常見的報錯就這幾種,記住就行。
首先,我們需要知道常見的報錯關鍵字。
“SyntaxError:語法錯誤,代碼形式錯誤
AttributeError:屬性錯誤,特性引用和賦值失敗時會引發(fā)屬性錯誤
NameError:試圖訪問的變量名不存在
Exception:所有異常的基類,因為所有python異常類都是基類Exception的其中一員,異常都是從基類Exception繼承的,并且都在exceptions模塊中定義。
IOError:一般常見于打開不存在文件時會引發(fā)IOError錯誤,也可以解理為輸出輸入錯誤
KeyError:使用了映射中不存在的關鍵字(鍵)時引發(fā)的關鍵字錯誤
IndexError:索引錯誤,使用的索引不存在,常索引超出序列范圍,什么是索引
TypeError:類型錯誤,內(nèi)建操作或是函數(shù)用于在了錯誤類型的對象時會引發(fā)類型錯誤
ZeroDivisonError:除數(shù)為0,在用除法操作時,第二個參數(shù)為0時引發(fā)了該錯誤
ValueError:值錯誤,傳給對象的參數(shù)類型不正確,像是給int()函數(shù)傳入了字符串數(shù)據(jù)類型的參數(shù)。
”下面舉例說明下這幾種常見的報錯。
SyntaxError
SyntaxError,語法錯誤,報錯信息里出現(xiàn)這個關鍵字,我們就要意識到語法有問題,報錯信息再往上看,報錯信息中還會用 ^ 指出語法出現(xiàn)問題的具體問題,這樣我們就能快速定位語法有問題的地方。比如下面 for 循環(huán)后面忘了加冒號導致的語法錯誤。
這些語法錯誤沒有技巧了,初學者只有記下來,可以多看看 Python 編程規(guī)范:PEP8 規(guī)范。我收集了 PEP8 規(guī)范的中文版和英文版 PDF,需要的加我微信(微信號:RookieProM)獲取,記得備注“PEP8”。
AttributeError
屬性錯誤,特性引用和賦值失敗時會引發(fā)屬性錯誤,舉個例子,做過爬蟲小項目的伙伴應該對 requests 庫的用法比較熟悉。
response?=?requests.get(url)用 requests 請求返回的數(shù)據(jù)為 requests.models.Response,你可以在實例中打印出它的類型查看。
response?=?requests.get(url,?headers=headers)print(type(response))
#?結(jié)果
'requests.models.Response'>
Response 響應的常用屬性如下:
response.text?????#?響應回去的文本(字符串)response.content???#?響應回去的內(nèi)容(二進制),一般用來爬取視頻
response.status_code???#?響應的狀態(tài)碼
response.url????#?獲取請求連接地址
response.cookies????#?獲取返回的cookies信息
response.cookies.get_dict()???#?獲取返回的cookies信息
response.request???#?獲取請求方式
那如果對象不是 Response 類型,你也用來調(diào)用 text 屬性,這時就會報屬性錯誤:AttributeError
NameError
NameError,試圖訪問的變量名不存在,這個容易理解,有時變量名忘了定義或者變量名寫錯了都會報這個錯。
program_language?=?'Python'name?=?'知識圈'
official_accounts?=?programer_language?+?name
上面例子中,我故意寫錯了一個單詞 programer_language,這個單詞沒定義,所以會直接報 NameError 的錯誤。
NameError:?name?'programer_language'?is?not?definedIOError
操作文件出錯會報 IOError 的錯誤或者 IOError 的子類 FileNotFoundError。
with?open('Python.txt',?'r',?encoding='utf-8')?as?f:????f.read()
上方我打開的是一個在此目錄下不存在的文件 Python.txt,運行后會報 FileNotFoundError。
FileNotFoundError:?[Errno?2]?No?such?file?or?directory:?'Python.txt'KeyError
使用了映射中不存在的關鍵字(鍵)時引發(fā)的關鍵字錯誤,比如我們讀取字典時,讀取的 key 值不存在時會報 KeyError。
infos?=?{'official_accounts':?'Python知識圈',?'Bilibili':?'菜鳥程序員的日常'}print(infos['official_accounts'])
print(infos['zhihu'])
上面例子中,key 值為 official_accounts 的值是可以取到的,但是 key 值為 zhihu 的無法取到,會報 KeyError 的錯。
KeyError:?'zhihu'IndexError
索引錯誤,序列中沒有此索引(index),索引超出序列范圍時會報此錯。
infos?=?['official_accounts',?'Python知識圈',?'Bilibili',?'菜鳥程序員的日常']print(infos[5])
上面列表中有 4 個元素,索引最大是 3,因為索引從 0 開始,所以取索引為 5 的值時,會報 IndexError 的錯。
IndexError:?list?index?out?of?rangeTypeError
類型錯誤,內(nèi)建操作或是函數(shù)用于在了錯誤類型的對象時會引發(fā)類型錯誤。
class?Ball:????def?_init_(self,?color,?size,?direction):
????????self.color?=?color
????????self.size?=?size
????????self.direction?=?direction
????def?bounce(self):
????????if?self.direction?==?"down":
????????????self.direction?=?"up"
myBall?=?Ball("red",?"small",?"down")
上面例子中,運行程序會報 TypeError 的錯誤,原因是構(gòu)造函數(shù) init 前后應該是雙下劃線 __init__ ,上面寫成了單下劃線。
TypeError:?object()?takes?no?parametersZeroDivisonError:
除數(shù)為 0,在用除法操作時,第二個參數(shù)為 0 時引發(fā)了該錯誤。
a?=?100b?=?0
c?=?a/b
print(c)
這個還好理解,除數(shù)為 0 了,會報這個錯。
ZeroDivisionError:?division?by?zero上面舉例講了幾個常見的異常場景,你只有讀懂了這些報錯信息,你才知道你的代碼是哪里出了錯。程序一旦出錯,是一級一級往上報,控制臺也能看到報錯的具體行數(shù)。
對于程序項目中的異常,我們可能會對他進行 try except 異常處理,當然這是另一個主題需要分享的知識點,這里就不再贅述。
debug調(diào)試代碼
如果沒有明顯的報錯信息的話,比如我們經(jīng)常做爬蟲項目的時候,返回了一個空列表。這時我們就需要對代碼進行 debug。小伙伴喜歡用 print 函數(shù)去打印主要的變量,有些直接用編輯器 Pycharm 里面的 debug 功能。
我們在需要調(diào)試的代碼前單擊,前面會顯示紅色實心圓,整行代碼也會顯示紅色背景,也可以點擊多行進行 debug,如下例子中,計算 1 到 100 相加之和,我在計算求和的代碼處加了 debug,右鍵選擇 Debug 選項調(diào)試代碼。
代碼運行到我們 debug 的地方時,會停下來,需要我們手動點擊 Debugger 輸出框里的 Step Over 按鈕程序才會繼續(xù)往下執(zhí)行。
點擊 Step Over 按鈕執(zhí)行時,對應的 Debug 處的后面還會顯示對應變量的變量,便于我們查看執(zhí)行過程。
面向谷歌編程
如果上面兩步都嘗試了,發(fā)現(xiàn)你還是沒法解決問題,那可能是你有些知識點沒掌握到,這時就是在搜索引擎中找找答案了,有名的技術問答社區(qū) stackoverflow.com 或者發(fā)群里請教其他伙伴,空余時間把自己不會的知識點多看看,這樣提升的速度會快一些。
總之,能快速找到問題所在,解決問題,總結(jié)問題,這樣進步就很快了。
編程界要以和為貴,再見,朋友們!
pk哥個人微信
添加pk哥個人微信即送Python資料
→ Python知識點100題的PDF
→ Python相關的電子書10本
記得備注:“100題”
往期推薦01求你了,別再用 pip 那烏龜?shù)乃俣热グ惭b庫了!
02Python100例(附PDF下載地址)
03馬保國一年能掙多少錢?
↓點擊閱讀原文查看pk哥原創(chuàng)視頻
我就知道你“在看”
總結(jié)
以上是生活随笔為你收集整理的webstorm里stylus代码报错_发生甚莫事了?我的程序为啥又报错了!的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c语言刷新输出_在fx-9860系列上用
- 下一篇: 小米6twrp最新第三方rec_闲鱼淘宝