python中常見錯誤及解決方法
python常見的錯誤有
1.NameError變數名錯誤
2.IndentationError程式碼縮排錯誤
3.AttributeError物件屬性錯誤
詳細講解
1.NameError變數名錯誤
報錯:
>>> print a<br>Traceback (most recent call last):<br>File "<stdin>",line 1,in <module><br>NameError: name 'a' is not defined<br>
解決方案:
先要給a賦值。才能使用它。在實際編寫程式碼過程中,報NameError錯誤時,檢視該變數是否賦值,或者是否有大小寫不一致錯誤,或者說不小心將變數名寫錯了。
注:在Python中,無需顯示變數宣告語句,變數在第一次被賦值時自動宣告。
>>> a=1<br>>>> print a<br>1<br>
2.IndentationError程式碼縮排錯誤
程式碼
a=1b=2<br>if a<b:<br>print a<br>
報錯:
IndentationError: expected an indented block<br>
原因:
縮排有誤,python的縮排非常嚴格,行首多個空格,少個空格都會報錯。這是新手常犯的一個錯誤,由於不熟悉python編碼規則。像def,class,if,for,while等程式碼塊都需要縮排。
縮排為四個空格寬度,需要說明一點,不同的文字編輯器中製表符(tab鍵)代表的空格寬度不一,如果程式碼需要跨平臺或跨編輯器讀寫,建議不要使用製表符。
解決方案
a=1b=2<br>if a<b:<br> print a<br>
3.AttributeError物件屬性錯誤
報錯:
>>> import sys<br>>>> sys.Path<br>Traceback (most recent call last):<br>File "<stdin>",in <module><br>AttributeError: 'module' object has no attribute 'Path'<br>
原因:
sys模組沒有Path屬性。
python對大小寫敏感,Path和path代表不同的變數。將Path改為path即可。
>>> sys.path<br>['','/usr/lib/python2.6/site-packages']<br>
初學者遇到的錯誤例項:
使用錯誤的縮排
Python用縮排區分程式碼塊,常見的錯誤用法:
print('Hello!') print('Howdy!')
導致:IndentationError: unexpected indent。同一個程式碼塊中的每行程式碼都必須保持一致的縮排量
if spam == 42: print('Hello!') print('Howdy!')
導致:IndentationError: unindent does not match any outer indentation level。程式碼塊結束之後縮排恢復到原來的位置
if spam == 42: print('Hello!')
導致:IndentationError: expected an indented block,“:” 後面要使用縮排
變數沒有定義
if spam == 42: print('Hello!')
導致:NameError: name 'spam' is not defined
獲取列表元素索引位置忘記呼叫 len 方法
通過索引位置獲取元素的時候,忘記使用 len 函式獲取列表的長度。
spam = ['cat','dog','mouse'] for i in range(spam): print(spam[i])
導致:TypeError: range() integer end argument expected,got list. 正確的做法是:
spam = ['cat','mouse'] for i in range(len(spam)): print(spam[i])
當然,更 Pythonic 的寫法是用 enumerate
spam = ['cat','mouse'] for i,item in enumerate(spam): print(i,item)
函式中區域性變數賦值前被使用
someVar = 42 def myFunction(): print(someVar) someVar = 100 myFunction()
導致:UnboundLocalError: local variable 'someVar' referenced before assignment
當函式中有一個與全域性作用域中同名的變數時,它會按照 LEGB 的順序查詢該變數,如果在函式內部的區域性作用域中也定義了一個同名的變數,那麼就不再到外部作用域查找了。因此,在 myFunction 函式中 someVar 被定義了,所以 print(someVar) 就不再外面查找了,但是 print 的時候該變數還沒賦值,所以出現了 UnboundLocalError
以上就是python中常見錯誤及解決方法的詳細內容,更多關於python常見錯誤有哪些的資料請關注我們其它相關文章!