1. 程式人生 > >Python常見十六個錯誤集合,你知道那些?

Python常見十六個錯誤集合,你知道那些?

學習 錯誤 程序員

使用python會出現各種各樣的錯誤,以下是Python常見的錯誤以及解決方法。

1.ValueError: ‘Conv2d_1a_3×3’ is not a valid scope name

這個是剛遇到的問題,在LZ自己手打Inception net的時候,想賦一個名字的時候出錯,其實這就是命名錯誤的問題,如果仔細看“×”是我在中文下打的符號,python是不認的,解決方案是使用英文字母”x“代替,錯誤即可解決,而且也能看到使用的卷積核的大小。

2.IndentationError:excepted an indented block

遇到這個問題簡直是要哭了,因為並不是語法錯誤的問題,而是你代碼書寫規範的問題。因為Python是一個對代碼縮進非常敏感的語言,你的循環結構就可能是依靠縮進的形式來表示的。最常見的問題就是TAB和space鍵的混用,這個是很容易報錯的,而且肉眼很難分辨出來,有的代碼編輯器可以選擇顯示空格,即便是這樣,也很難找到到底哪裏有問題。

其實,上面的報錯還有一個原因經常遇到,就是無首行縮進,例如寫if語句是,後面加冒號後如果直接換行,好的代碼編輯器會自動首行縮進,但有些代碼編輯器可能沒有這個功能,這是需要你手動縮進,這是最好養成習慣,不要連續敲幾次空格鍵,直接一下TAB就可以了,保持代碼風格的一致在Python的使用中是非常重要的。

3.TypeError: max_pool2d() got an unexpected keyword argument ‘atride’

這個錯誤就是純粹的手誤問題了,你定義的函數中沒有這個關鍵字,這時候就要自己查看定義的函數名字,我這裏應該是”stride“,在卷積神經網絡是定義步長的。

4.NameError: global name ‘time’ is not defined

這個問題是我在調用函數time.time()用來計算時間損耗時,使用的函數時報錯的,具體解決方案很簡單,只要在代碼開頭加上import time這句把time庫文件加進來就好了。

5.NameError: global name ‘datetime’ is not defined

解決方案同上,from datetime import datetime

6.NameError: global name ‘math’ is not defined

解決方案同上,import math

7.Python中出現類似ascii之類的報錯

這一類問題主要是在Python代碼中有中文輸入,這個解決方案是在代碼開頭加上:#coding:utf-8。不然凡是輸入中文輸入法下的字符就會報錯。

8.NameError: global name ‘listdir’ is not defined

import os

這裏需要註意幾個問題,如果直接使用import os的時候,那麽調用是就需要寫成os.listdir(),如果是使用from os import *,那麽是可以直接使用listdir(),但是會出現模塊之間的命名沖突問題,對代碼的穩定性會有一定的影響,所以LZ建議如果對模塊函數還不是很熟悉的情況下哈市使用第一種方法。

9.TypeError: ‘dict_keys’ object does not support indexing

這個問題是python版本的問題

#如果使用的是python2
firstStr = myTree.keys()[0]
#LZ使用的是python3
firstSides = list(myTree.keys())
firstStr = firstSides[0]

這是看決策樹代碼出現的問題,python3如果運行

firstStr = myTree.keys()[0]

就會報這個錯誤,解決辦法就是先轉換成list,再把需要的索引提取出來。

10.NameError: name ‘reload’ is not defined

這個是如果小夥伴們修改了自己寫的module,在重載module時可能會出現的一個問題,解決方法還時很簡單

import importlib
importlib.reload(your module)

11.SyntaxError: invalid character in indentifier

我這裏先貼出它報錯的那行代碼是怎麽顯示的:

b = 6\xao

這個LZ之前講過一般出現ascii之類的問題就是混中文輸入法了,出現這個問題著實尷尬,為什麽?肉眼哪能看出來是中文輸入法下的空格和英文輸入法下的空格/(ㄒoㄒ)/~~,這個只能看到底哪行報錯吧中文的空格替換成英文的空格才行,其它也沒啥辦法,最好在輸入代碼時少切換切換輸入法形式。

12.NameError: name ‘xrange’ is not defined

python版本問題,不兼容,python3版本的換成range()函數就行了。

13.AttributeError: ‘list’ object has no attribute ‘testVec’

這是說list沒有這個屬性,是啥問題呢?LZ手殘的把’,’打成了’.’,知道python應該都知道’.’這是要在class裏定義才能有的性質,自己憑空寫是沒用的。

14.SyntaxError: Missing paraentheses in call to ‘print’

老生常談了,python的版本問題,python3.X要加()。

print (‘hello world!‘)

15.SystemError: cannot compile ‘Python.h’

這個問題就是沒法解析Python的頭文件,解決方法還是很簡單的。

#先更新下源啦
sudo apt-get update

#安裝python-dev
sudo apt-get install python-dev 

16. no module named wx

缺少模塊的解決還是很好解決的,缺啥裝啥就行了

sudo apt-get install python-wxtools

Python接觸時間不是很長,暫時遇到的錯誤還不時很多,所以就先寫這麽多!

Python常見十六個錯誤集合,你知道那些?