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