python中常見錯(cuò)誤及解決方法
python常見的錯(cuò)誤有
1.NameError變量名錯(cuò)誤
2.IndentationError代碼縮進(jìn)錯(cuò)誤
3.AttributeError對(duì)象屬性錯(cuò)誤
詳細(xì)講解
1.NameError變量名錯(cuò)誤
報(bào)錯(cuò):
>>> print a<br>Traceback (most recent call last):<br>File "<stdin>", line 1, in <module><br>NameError: name 'a' is not defined<br>
解決方案:
先要給a賦值。才能使用它。在實(shí)際編寫代碼過程中,報(bào)NameError錯(cuò)誤時(shí),查看該變量是否賦值,或者是否有大小寫不一致錯(cuò)誤,或者說不小心將變量名寫錯(cuò)了。
注:在Python中,無需顯示變量聲明語句,變量在第一次被賦值時(shí)自動(dòng)聲明。
>>> a=1<br>>>> print a<br>1<br>
2.IndentationError代碼縮進(jìn)錯(cuò)誤
代碼
a=1b=2<br>if a<b:<br>print a<br>
報(bào)錯(cuò):
IndentationError: expected an indented block<br>
原因:
縮進(jìn)有誤,python的縮進(jìn)非常嚴(yán)格,行首多個(gè)空格,少個(gè)空格都會(huì)報(bào)錯(cuò)。這是新手常犯的一個(gè)錯(cuò)誤,由于不熟悉python編碼規(guī)則。像def,class,if,for,while等代碼塊都需要縮進(jìn)。
縮進(jìn)為四個(gè)空格寬度,需要說明一點(diǎn),不同的文本編輯器中制表符(tab鍵)代表的空格寬度不一,如果代碼需要跨平臺(tái)或跨編輯器讀寫,建議不要使用制表符。
解決方案
a=1b=2<br>if a<b:<br> print a<br>
3.AttributeError對(duì)象屬性錯(cuò)誤
報(bào)錯(cuò):
>>> import sys<br>>>> sys.Path<br>Traceback (most recent call last):<br>File "<stdin>", line 1, in <module><br>AttributeError: 'module' object has no attribute 'Path'<br>
原因:
sys模塊沒有Path屬性。
python對(duì)大小寫敏感,Path和path代表不同的變量。將Path改為path即可。
>>> sys.path<br>['', '/usr/lib/python2.6/site-packages']<br>
初學(xué)者遇到的錯(cuò)誤實(shí)例:
使用錯(cuò)誤的縮進(jìn)
Python用縮進(jìn)區(qū)分代碼塊,常見的錯(cuò)誤用法:
print('Hello!')
print('Howdy!')
導(dǎo)致:IndentationError: unexpected indent。同一個(gè)代碼塊中的每行代碼都必須保持一致的縮進(jìn)量
if spam == 42:
print('Hello!')
print('Howdy!')
導(dǎo)致:IndentationError: unindent does not match any outer indentation level。代碼塊結(jié)束之后縮進(jìn)恢復(fù)到原來的位置
if spam == 42:
print('Hello!')
導(dǎo)致:IndentationError: expected an indented block,“:” 后面要使用縮進(jìn)
變量沒有定義
if spam == 42:
print('Hello!')
導(dǎo)致:NameError: name 'spam' is not defined
獲取列表元素索引位置忘記調(diào)用 len 方法
通過索引位置獲取元素的時(shí)候,忘記使用 len 函數(shù)獲取列表的長(zhǎng)度。
spam = ['cat', 'dog', 'mouse'] for i in range(spam): print(spam[i])
導(dǎo)致:TypeError: range() integer end argument expected, got list. 正確的做法是:
spam = ['cat', 'dog', 'mouse'] for i in range(len(spam)): print(spam[i])
當(dāng)然,更 Pythonic 的寫法是用 enumerate
spam = ['cat', 'dog', 'mouse'] for i, item in enumerate(spam): print(i, item)
函數(shù)中局部變量賦值前被使用
someVar = 42 def myFunction(): print(someVar) someVar = 100 myFunction()
導(dǎo)致:UnboundLocalError: local variable 'someVar' referenced before assignment
當(dāng)函數(shù)中有一個(gè)與全局作用域中同名的變量時(shí),它會(huì)按照 LEGB 的順序查找該變量,如果在函數(shù)內(nèi)部的局部作用域中也定義了一個(gè)同名的變量,那么就不再到外部作用域查找了。因此,在 myFunction 函數(shù)中 someVar 被定義了,所以 print(someVar) 就不再外面查找了,但是 print 的時(shí)候該變量還沒賦值,所以出現(xiàn)了 UnboundLocalError
以上就是python中常見錯(cuò)誤及解決方法的詳細(xì)內(nèi)容,更多關(guān)于python常見錯(cuò)誤有哪些的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- Python運(yùn)行的17個(gè)時(shí)新手常見錯(cuò)誤小結(jié)
- Python eval的常見錯(cuò)誤封裝及利用原理詳解
- 新手常見Python錯(cuò)誤及異常解決處理方案
- Python初學(xué)者常見錯(cuò)誤詳解
- Python常見錯(cuò)誤:IndexError:?list?index?out?of?range解決
- Python3環(huán)境安裝Scrapy爬蟲框架過程及常見錯(cuò)誤
- Python全局變量與global關(guān)鍵字常見錯(cuò)誤解決方案
- Python常見錯(cuò)誤類型及解決方法
- Python常見的錯(cuò)誤以及其解決方案
相關(guān)文章
Keras實(shí)現(xiàn)DenseNet結(jié)構(gòu)操作
這篇文章主要介紹了Keras實(shí)現(xiàn)DenseNet結(jié)構(gòu)操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-07-07
手把手教你如何使python變?yōu)榭蓤?zhí)行文件
對(duì)于exe可執(zhí)行文件,相信大家都不陌生,下面這篇文章主要給大家介紹了關(guān)于如何使python變?yōu)榭蓤?zhí)行文件的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下2023-02-02
Django中ORM表的創(chuàng)建和增刪改查方法示例
這篇文章主要給大家介紹了關(guān)于Django中ORM表的創(chuàng)建和增刪改查等基本操作的方法,還給大家分享了django orm常用查詢篩選的相關(guān)內(nèi)容,分享出來供大家參考學(xué)習(xí),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2017-11-11
Python+SimpleRNN實(shí)現(xiàn)股票預(yù)測(cè)詳解
這篇文章主要為大家詳細(xì)介紹了如何利用Python和SimpleRNN實(shí)現(xiàn)股票預(yù)測(cè)效果,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)有一定幫助,需要的可以參考一下2022-05-05
pymongo實(shí)現(xiàn)多結(jié)果進(jìn)行多列排序的方法
這篇文章主要介紹了pymongo實(shí)現(xiàn)多結(jié)果進(jìn)行多列排序的方法,涉及Python排序的相關(guān)技巧,需要的朋友可以參考下2015-05-05
使用Python快樂學(xué)數(shù)學(xué)Github萬星神器Manim簡(jiǎn)介
這篇文章主要介紹了使用Python快樂學(xué)數(shù)學(xué)Github萬星神器Manim簡(jiǎn)介,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-08-08
Python從ZabbixAPI獲取信息及實(shí)現(xiàn)Zabbix-API 監(jiān)控的方法
這篇文章主要介紹了Python從ZabbixAPI獲取信息及實(shí)現(xiàn)Zabbix-API 監(jiān)控的方法,需要的朋友可以參考下2018-09-09
python機(jī)器學(xué)習(xí)混淆矩陣及confusion?matrix函數(shù)使用
這篇文章主要為大家介紹了python機(jī)器學(xué)習(xí)混淆矩陣confusion_matrix函數(shù)使用示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06

