Python常见十六个错误集合,你知道那些?
使用python會(huì)出現(xiàn)各種各樣的錯(cuò)誤,以下是Python常見的錯(cuò)誤以及解決方法。
1.ValueError: ‘Conv2d_1a_3×3’ is not a valid scope name
這個(gè)是剛遇到的問(wèn)題,在LZ自己手打Inception net的時(shí)候,想賦一個(gè)名字的時(shí)候出錯(cuò),其實(shí)這就是命名錯(cuò)誤的問(wèn)題,如果仔細(xì)看“×”是我在中文下打的符號(hào),python是不認(rèn)的,解決方案是使用英文字母”x“代替,錯(cuò)誤即可解決,而且也能看到使用的卷積核的大小。
2.IndentationError:excepted an indented block
遇到這個(gè)問(wèn)題簡(jiǎn)直是要哭了,因?yàn)椴⒉皇钦Z(yǔ)法錯(cuò)誤的問(wèn)題,而是你代碼書寫規(guī)范的問(wèn)題。因?yàn)镻ython是一個(gè)對(duì)代碼縮進(jìn)非常敏感的語(yǔ)言,你的循環(huán)結(jié)構(gòu)就可能是依靠縮進(jìn)的形式來(lái)表示的。最常見的問(wèn)題就是TAB和space鍵的混用,這個(gè)是很容易報(bào)錯(cuò)的,而且肉眼很難分辨出來(lái),有的代碼編輯器可以選擇顯示空格,即便是這樣,也很難找到到底哪里有問(wèn)題。
其實(shí),上面的報(bào)錯(cuò)還有一個(gè)原因經(jīng)常遇到,就是無(wú)首行縮進(jìn),例如寫if語(yǔ)句是,后面加冒號(hào)后如果直接換行,好的代碼編輯器會(huì)自動(dòng)首行縮進(jìn),但有些代碼編輯器可能沒有這個(gè)功能,這是需要你手動(dòng)縮進(jìn),這是最好養(yǎng)成習(xí)慣,不要連續(xù)敲幾次空格鍵,直接一下TAB就可以了,保持代碼風(fēng)格的一致在Python的使用中是非常重要的。
3.TypeError: max_pool2d() got an unexpected keyword argument ‘a(chǎn)tride’
這個(gè)錯(cuò)誤就是純粹的手誤問(wèn)題了,你定義的函數(shù)中沒有這個(gè)關(guān)鍵字,這時(shí)候就要自己查看定義的函數(shù)名字,我這里應(yīng)該是”stride“,在卷積神經(jīng)網(wǎng)絡(luò)是定義步長(zhǎng)的。
4.NameError: global name ‘time’ is not defined
這個(gè)問(wèn)題是我在調(diào)用函數(shù)time.time()用來(lái)計(jì)算時(shí)間損耗時(shí),使用的函數(shù)時(shí)報(bào)錯(cuò)的,具體解決方案很簡(jiǎn)單,只要在代碼開頭加上import time這句把time庫(kù)文件加進(jìn)來(lái)就好了。
5.NameError: global name ‘datetime’ is not defined
解決方案同上,from datetime import datetime
6.NameError: global name ‘math’ is not defined
解決方案同上,import math
7.Python中出現(xiàn)類似ascii之類的報(bào)錯(cuò)
這一類問(wèn)題主要是在Python代碼中有中文輸入,這個(gè)解決方案是在代碼開頭加上:#coding:utf-8。不然凡是輸入中文輸入法下的字符就會(huì)報(bào)錯(cuò)。
8.NameError: global name ‘listdir’ is not defined
import os這里需要注意幾個(gè)問(wèn)題,如果直接使用import os的時(shí)候,那么調(diào)用是就需要寫成os.listdir(),如果是使用from os import *,那么是可以直接使用listdir(),但是會(huì)出現(xiàn)模塊之間的命名沖突問(wèn)題,對(duì)代碼的穩(wěn)定性會(huì)有一定的影響,所以LZ建議如果對(duì)模塊函數(shù)還不是很熟悉的情況下哈市使用第一種方法。
9.TypeError: ‘dict_keys’ object does not support indexing
這個(gè)問(wèn)題是python版本的問(wèn)題
#如果使用的是python2 firstStr = myTree.keys()[0] #LZ使用的是python3 firstSides = list(myTree.keys()) firstStr = firstSides[0]這是看決策樹代碼出現(xiàn)的問(wèn)題,python3如果運(yùn)行
firstStr = myTree.keys()[0]就會(huì)報(bào)這個(gè)錯(cuò)誤,解決辦法就是先轉(zhuǎn)換成list,再把需要的索引提取出來(lái)。
10.NameError: name ‘reload’ is not defined
這個(gè)是如果小伙伴們修改了自己寫的module,在重載module時(shí)可能會(huì)出現(xiàn)的一個(gè)問(wèn)題,解決方法還時(shí)很簡(jiǎn)單
import importlib importlib.reload(your module)11.SyntaxError: invalid character in indentifier
我這里先貼出它報(bào)錯(cuò)的那行代碼是怎么顯示的:
b = 6\xao這個(gè)LZ之前講過(guò)一般出現(xiàn)ascii之類的問(wèn)題就是混中文輸入法了,出現(xiàn)這個(gè)問(wèn)題著實(shí)尷尬,為什么?肉眼哪能看出來(lái)是中文輸入法下的空格和英文輸入法下的空格/(ㄒoㄒ)/~~,這個(gè)只能看到底哪行報(bào)錯(cuò)吧中文的空格替換成英文的空格才行,其它也沒啥辦法,最好在輸入代碼時(shí)少切換切換輸入法形式。
12.NameError: name ‘xrange’ is not defined
python版本問(wèn)題,不兼容,python3版本的換成range()函數(shù)就行了。
13.AttributeError: ‘list’ object has no attribute ‘testVec’
這是說(shuō)list沒有這個(gè)屬性,是啥問(wèn)題呢?LZ手殘的把’,’打成了’.’,知道python應(yīng)該都知道’.’這是要在class里定義才能有的性質(zhì),自己憑空寫是沒用的。
14.SyntaxError: Missing paraentheses in call to ‘print’
老生常談了,python的版本問(wèn)題,python3.X要加()。
print ('hello world!')15.SystemError: cannot compile ‘Python.h’
這個(gè)問(wèn)題就是沒法解析Python的頭文件,解決方法還是很簡(jiǎn)單的。
#先更新下源啦 sudo apt-get update#安裝python-dev sudo apt-get install python-dev16. no module named wx
缺少模塊的解決還是很好解決的,缺啥裝啥就行了
sudo apt-get install python-wxtoolsPython接觸時(shí)間不是很長(zhǎng),暫時(shí)遇到的錯(cuò)誤還不時(shí)很多,所以就先寫這么多!
轉(zhuǎn)載于:https://blog.51cto.com/13786054/2126197
總結(jié)
以上是生活随笔為你收集整理的Python常见十六个错误集合,你知道那些?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: visitor-访问模式
- 下一篇: python全栈开发 * 08知