Python解決“argument?after?*?must?be?an?iterable”報(bào)錯(cuò)問題
Python argument after * must be an iterable報(bào)錯(cuò)
使用threading.Thread創(chuàng)建線程時(shí)報(bào)了“argument after * must be an iterable”這樣的一個(gè)錯(cuò)誤
th = threading.Thread(target=executeThread, args=(name)) th.start()
這種寫法是錯(cuò)誤的,args中少了一個(gè)逗號
正確的寫法:
th = threading.Thread(target=executeThread, args=(name,)) th.start()
Python常見報(bào)錯(cuò)及解決方案,BUG拯救指南
如果說寫代碼最害怕什么,那無疑是Bug。而對于新手來說,剛剛接觸編程,在享受寫代碼的成就感時(shí),往往也會被各式各樣的Bug弄得暈頭轉(zhuǎn)向。
1.縮進(jìn)錯(cuò)誤(IndentationError)
在Python中,所有代碼都是通過正確的空格排列的。所以,無論是多出來空格,還是缺少空格,整個(gè)代碼都不會運(yùn)行,并且僅返回一個(gè)錯(cuò)誤函數(shù)。
Python代碼遵循PEP8空白規(guī)范,每一級縮進(jìn)使用4個(gè)空格。
錯(cuò)誤示例
a=1 b=2 if a<b: print a
修正
a=1 b=2 if a<b: print a
2.Tab 和空格混用(TabError)
此類報(bào)錯(cuò)是由于同時(shí)使用制表符和空格進(jìn)行編碼導(dǎo)致的,tab鍵本質(zhì)上是制表符,而非縮進(jìn)符。
由于不同文本編輯器中制表符代表的空格寬度不一,建議使用空格。
3.語法錯(cuò)誤(SyntaxError)
語法錯(cuò)誤的原因包含下列三種:
1.無效語法(invalid syntax)
標(biāo)點(diǎn)符號遺漏,中英文符號混用,拼寫錯(cuò)誤,變量名或者函數(shù)名使用了關(guān)鍵字。
2.標(biāo)識符中有無效字符(invalid character in identifier)
代碼中出現(xiàn)了無法識別的字符,檢查一下是否有多余字符或者中文字符。
3.檢查到不完整的字符串(EOL while scanning string litera)
很多情況下是由于字符串兩邊的引號不統(tǒng)一。
錯(cuò)誤示例
print( 'hello', 'world')
錯(cuò)誤原因:逗號為中文逗號
報(bào)錯(cuò)信息:SyntaxError: invalid character inidentifier
result = (1024+(512*2)/128
錯(cuò)誤原因:圓括號沒有成對出現(xiàn)
報(bào)錯(cuò)信息:SyntaxError:unexpected EOF whileparsing
if name =="A" print("hello")
錯(cuò)誤原因:忘記在if/elif/else/while/for/def/class等語句末尾添加冒號
報(bào)錯(cuò)信息:SyntaxError:invalid syntax
3.變量名錯(cuò)誤(NameErro)
變量名錯(cuò)誤是最普通也是最常會遇到的內(nèi)建報(bào)錯(cuò)類型,經(jīng)常會出現(xiàn)在Python變量命名上,如果找不到變量就會引發(fā)NameError。關(guān)于變量名的規(guī)則,需要牢記以下幾條:
- 變量名只能包含字母、數(shù)字和下劃線,不可用數(shù)字開頭;
- 變量名不能包含空格,但可使用下劃線來分隔其中的單詞;
- 不要將Python關(guān)鍵字和函數(shù)名用作變量名,如print;
- 變量名應(yīng)既簡短又具有描述性;
- 慎用小寫字母l和大寫字母O,因?yàn)槿菀妆诲e(cuò)看成數(shù)字1和0。
出現(xiàn)變量名錯(cuò)誤,可以查看變量是否賦值,是否存在大小寫不統(tǒng)一或者變量名寫錯(cuò)了的情況,找到后加以修正。
錯(cuò)誤示例
message = "Hello!" print(mesage)
錯(cuò)誤原因:變量名拼寫錯(cuò)誤,誤將massage拼寫為masge
報(bào)錯(cuò)信息:NameError: name 'mesage' is not defined
5.索引錯(cuò)誤(IndexError)
索引是項(xiàng)目在數(shù)組或列表中的位置,當(dāng)我們嘗試從列表中訪問元素或從列表中不存在的索引中訪問元組時(shí),就會發(fā)生這種異常。
例如,有一個(gè)包含10個(gè)元素的列表,索引在0到9之間,如果試圖訪問索引10或11或更多的元素,就會產(chǎn)生IndexError。
錯(cuò)誤示例
a = [1,2,3] print(a[3])
錯(cuò)誤原因:列表a中不存在第4個(gè)索引,列表的索引從0開始編號
報(bào)錯(cuò)信息:IndexError: string index out of range
6.鍵錯(cuò)誤(KeyError)
在讀取字典中的key和value時(shí),如 果key不存在,就會觸發(fā)KeyError錯(cuò)誤。
錯(cuò)誤示例
d = {'a':1,'b':2} print(d['f'])
錯(cuò)誤原因:鍵‘f’不存在
報(bào)錯(cuò)信息:KeyError: 'f'
7.類型錯(cuò)誤(TypeError)
在程序中使用不正確或不受支持的對象類型時(shí),會引發(fā)該錯(cuò)誤。
如果嘗試調(diào)用不可調(diào)用的對象或通過非迭代標(biāo)識符進(jìn)行迭代,也會引發(fā)此錯(cuò)誤。
錯(cuò)誤示例
age=18 print("我的年齡是"+age)
錯(cuò)誤原因:在使用“+”做拼接的時(shí)候,必須使用字符串,或者 把數(shù)字用str()函數(shù)轉(zhuǎn)化成字符串
報(bào)錯(cuò)信息:TypeError:can only concatenate str(not"int")to str
8.屬性錯(cuò)誤(AttributeError)
特性引用和賦值失敗時(shí)會引發(fā)屬性錯(cuò)誤。
此類錯(cuò)誤的原因是嘗試訪問未知的對象屬性,換句話說就是找不到對應(yīng)對象的屬性??梢詸z查類中構(gòu)造函數(shù)__init__()是否寫正確,左右兩邊各兩條下劃線。
對于初學(xué)的小伙伴來說,代碼經(jīng)常出現(xiàn)Bug并不代表著你學(xué)得不好。若是將一個(gè)個(gè)Bug看作游戲里小怪,那么消滅Bug的過程又何嘗不是升級的過程呢?
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
python 獲取utc時(shí)間轉(zhuǎn)化為本地時(shí)間的方法
今天小編就為大家分享一篇python 獲取utc時(shí)間轉(zhuǎn)化為本地時(shí)間的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-12-12selenium+opencv實(shí)現(xiàn)滑塊驗(yàn)證碼的登陸
很多網(wǎng)站登錄登陸時(shí)都要用到滑塊驗(yàn)證碼,本文主要介紹了selenium+opencv實(shí)現(xiàn)滑塊驗(yàn)證碼的登陸,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-04-04Python數(shù)據(jù)可視化之Seaborn的使用詳解
Seaborn庫是python中基于matplotlib庫的可視化工具庫,通過sns我們可以更方便地繪制出更美觀的圖表。本文將分享python基于Seaborn庫的一系列繪圖操作,感興趣的可以了解一下2022-04-04Python實(shí)現(xiàn)PS濾鏡Fish lens圖像扭曲效果示例
這篇文章主要介紹了Python實(shí)現(xiàn)PS濾鏡Fish lens圖像扭曲效果,結(jié)合實(shí)例形式分析了Python實(shí)現(xiàn)PS濾鏡的圖像扭曲效果相關(guān)操作技巧,需要的朋友可以參考下2018-01-01OpenCV+Python識別車牌和字符分割的實(shí)現(xiàn)
這篇文章主要介紹了OpenCV+Python識別車牌和字符分割的實(shí)現(xiàn),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-01-01python Pygal庫生成SVG(可縮放矢量圖形)圖表示例
這篇文章主要為大家介紹了python Pygal庫生成SVG(可縮放矢量圖形)圖表示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2024-01-01python讀取eml文件并用正則表達(dá)式匹配郵箱的代碼
今天接到一個(gè)需求有一個(gè)同事離職了,但是留下了非常多的郵件,我需要將他的郵件進(jìn)行分類,只要郵件中以@xxx.com結(jié)尾的存放在文件夾中,否則放在另一個(gè)文件夾中,這篇文章主要介紹了python讀取eml文件并用正則匹配郵箱,需要的朋友可以參考下2022-11-11Python摳圖教程之使用OpenCV實(shí)現(xiàn)背景去除
這篇文章主要給大家介紹了關(guān)于Python摳圖教程之使用OpenCV實(shí)現(xiàn)背景去除的相關(guān)資料,背景去除是在很多視覺應(yīng)用里的主要預(yù)處理步驟,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-10-10