Python常見(jiàn)的錯(cuò)誤以及其解決方案
此文整理了一些常見(jiàn)的 Python 錯(cuò)誤及其解決方案。
1、SyntaxError: invalid syntax
說(shuō)明:無(wú)效的語(yǔ)法是最常見(jiàn)的錯(cuò)誤之一,通常是由于編寫(xiě)代碼時(shí)違反了 Python 的語(yǔ)法規(guī)則??赡艿脑颍?/p>
- 忘記在
if、while、for等語(yǔ)句后寫(xiě)冒號(hào),或者將冒號(hào)寫(xiě)成分號(hào)或其他符號(hào)。解決方案:更改為英文半角冒號(hào)。 - 代碼中可能存在未正確關(guān)閉的括號(hào),或者在字符串中使用的引號(hào)未正確匹配。解決方案:檢查括號(hào),引號(hào)處。
- 條件表達(dá)式中出現(xiàn)等號(hào)(=)。解決方案:將其更改為比較運(yùn)算符(==)。
- 定義沒(méi)有參數(shù)的函數(shù)時(shí)未添加括號(hào)。解決方案:添加括號(hào)。
…
查看錯(cuò)誤提示信息,通常會(huì)指出出錯(cuò)的行數(shù)和位置。合適的代碼編輯器也會(huì)在代碼中標(biāo)記出語(yǔ)法錯(cuò)誤。
2、Syntax Error: non-default argument follows default argument
說(shuō)明:定義的參數(shù)順序不正確??赡艿那闆r:
默認(rèn)值參數(shù)未放在所有參數(shù)的末尾。解決方案:更改參數(shù)的順序。
3、SyntaxError : invalid character in identifier
說(shuō)明:標(biāo)識(shí)符中存在無(wú)效字符,通常是由于在標(biāo)識(shí)符(變量名、函數(shù)名、類名等)中使用了無(wú)效的字符引起的。在 Python 中,標(biāo)識(shí)符必須遵循一定的命名規(guī)則,不能包含特殊字符或空格,只能包含字母、數(shù)字和下劃線,并且必須以字母(或者下劃線 _)開(kāi)頭??赡艿脑颍?/p>
- 標(biāo)識(shí)符中包含了不被 Python 認(rèn)可的特殊字符,如
@、#、$、%等。 - 標(biāo)識(shí)符中包含空格或制表符。
- 標(biāo)識(shí)符以數(shù)字開(kāi)頭。
- 標(biāo)識(shí)符與 Python 的保留字或關(guān)鍵字沖突。
4、TypeError: can only concatenate str (not “XXX”) to str
說(shuō)明:只能將字符串與其他字符串連接起來(lái)。可能的原因:
嘗試將字符串與非字符串?dāng)?shù)據(jù)類型(如整數(shù)、浮點(diǎn)數(shù)、布爾值或序列對(duì)象)連接起來(lái)。解決方案:在連接之前使用 str() 函數(shù)轉(zhuǎn)換數(shù)據(jù)類型。
5、TypeError: f() takes exactly 2 arguments (1 given)
說(shuō)明:向函數(shù)提供的參數(shù)不足??赡艿脑颍?/p>
定義具有兩個(gè)參數(shù)的函數(shù),但在調(diào)用時(shí)僅提供一個(gè)參數(shù)。解決方案:提供缺少的參數(shù)以完成函數(shù)調(diào)用。
6、TypeError: ‘tuple’ object does not support item assignment
說(shuō)明:無(wú)法修改元組元素??赡艿脑颍?/p>
嘗試通過(guò)索引修改元組元素。解決方案:將元組轉(zhuǎn)換為列表或移除修改操作。
7、ValueError: could not convert string to float:‘12.2s’
說(shuō)明:無(wú)法將字符串轉(zhuǎn)換為浮點(diǎn)數(shù)??赡艿脑颍?br />float() 函數(shù)接受了非浮點(diǎn)字符串?dāng)?shù)據(jù)類型。解決方案:修改為浮點(diǎn)字符串。
8、ValueError: invalid literal for int() with base 10
說(shuō)明:向 int() 函數(shù)傳遞的參數(shù)無(wú)效??赡艿脑颍?/p>
- 字符串中包含了非數(shù)字字符。解決方案:確保字符串中只包含數(shù)字字符??梢允褂?nbsp;
str.isdigit()方法來(lái)檢查字符串是否只包含數(shù)字字符。 - 嘗試將包含小數(shù)點(diǎn)的字符串轉(zhuǎn)換為整數(shù)。解決方案:如果字符串可能包含浮點(diǎn)數(shù),使用
float()函數(shù)將其轉(zhuǎn)換為浮點(diǎn)數(shù),然后再將其轉(zhuǎn)換為整數(shù)。 - 過(guò)大或過(guò)小的數(shù)字:嘗試將超出整數(shù)表示范圍的數(shù)字字符串轉(zhuǎn)換為整數(shù)。解決方案:數(shù)字太大或太小以至于超出了 Python 的整數(shù)表示范圍,使用
float()或其他數(shù)據(jù)類型來(lái)處理超大數(shù)值。
9、ValueError: substring not found
說(shuō)明:在嘗試查找一個(gè)子字符串時(shí),該子字符串未在目標(biāo)字符串中找到。這個(gè)錯(cuò)誤可能會(huì)在使用字符串的 index()、find()、rfind() 等方法時(shí)觸發(fā)。解決方案:搜索前檢查。
10、ZeroDivisionError: division by zero
說(shuō)明:0 不能用作除數(shù)??赡艿脑颍簣?zhí)行除法、整除或取余運(yùn)算時(shí),使用 0 作為除數(shù)。解決方案:在進(jìn)行除法操作之前,檢查除數(shù)是否為零;使用條件語(yǔ)句避免除以零的情況發(fā)生。
11、AttribteError: ‘module’ object has no attribute xxx’
說(shuō)明:模塊沒(méi)有相關(guān)屬性??赡艿脑颍?/p>
- 拼寫(xiě)錯(cuò)誤:嘗試訪問(wèn)的屬性或方法名的拼寫(xiě)不正確。解決方案:檢查拼寫(xiě),確保使用正確的屬性或方法名。
- 命名
.py文件時(shí)使用 Python 保留字或與模塊名稱相同。解決方案:修改文件名 - 模塊重命名:如果導(dǎo)入了一個(gè)模塊并使用了別名,那么需要使用別名來(lái)訪問(wèn)模塊的屬性或方法。解決方案:使用正確的別名來(lái)訪問(wèn)屬性或方法。
12、AttributeError: ‘Obj’ object has no attribute ‘attr’
說(shuō)明:對(duì)象沒(méi)有相關(guān)屬性。可能的原因:
- 拼寫(xiě)錯(cuò)誤:您嘗試訪問(wèn)的屬性或方法名的拼寫(xiě)不正確。解決方案:檢查拼寫(xiě),確保使用正確的屬性或方法名。
- 如果屬性或方法是私有的(以雙下劃線
__開(kāi)頭),則不能直接訪問(wèn)。解決方案:如果要訪問(wèn)私有屬性或方法,可以使用單下劃線_或通過(guò)類的方法進(jìn)行訪問(wèn)。 - 對(duì)象類型錯(cuò)誤:有時(shí),可能在一個(gè)對(duì)象上調(diào)用應(yīng)該是類的方法,或者嘗試在一個(gè)非對(duì)象上調(diào)用對(duì)象方法。解決方案:確保按照正確的方式使用對(duì)象方法和類方法。對(duì)象方法需要在對(duì)象上調(diào)用,而類方法需要在類上調(diào)用
13、FileExistsError: [Errmo 17] File exists
說(shuō)明:該文件已存在。解決方案:首先檢查文件是否存在,如果存在,請(qǐng)不要再次創(chuàng)建它。
14、FileNotFoundError: [Ermo 2] No such file or directory
說(shuō)明:請(qǐng)求的文件或目錄不存在。解決方案:檢查文件或目錄的路徑是否正確
15、IndentationError: expected an indented block
說(shuō)明:需要縮進(jìn)塊??赡艿脑颍?/p>
- 在定義函數(shù)或類時(shí)沒(méi)有縮進(jìn)。 解決方案:添加縮進(jìn)
- 在
if、for或while語(yǔ)句的結(jié)構(gòu)下沒(méi)有縮進(jìn)。解決方案:添加縮進(jìn)
16、IndentationError: unexpected indent
說(shuō)明:縮進(jìn)錯(cuò)誤。可能的原因:除了縮進(jìn)之外,代碼前面還會(huì)出現(xiàn)額外的空格。解決方案:刪除多余的空格。
17、IndentationError: unindent does not match any outer indentation level
說(shuō)明:縮進(jìn)問(wèn)題??赡艿脑颍?/p>
- 同一級(jí)別的代碼塊使用不同的縮進(jìn)規(guī)則(代碼未對(duì)齊)。解決方案:調(diào)整縮進(jìn)。
- 有非法字符或其他格式的不可見(jiàn)內(nèi)容。解決方案:刪除非法字符。
18、IndexError: list index out of range
說(shuō)明:列表索引超出范圍,可能的原因:
- 獲取元素時(shí)指定的索引值超過(guò)列表的長(zhǎng)度。解決方案:修改索引值
- 列表為空,獲取元素時(shí)出錯(cuò)。解決方案:在獲取之前檢查它是否不為空。
19、DirectoryError: [Ermo 21] Is a directory
說(shuō)明:嘗試對(duì)文件進(jìn)行操作但提供了目錄。可能的原因:將目錄作為文件進(jìn)行操作,例如,如果 “test” 是一個(gè)目錄,則使用 os.remove(test) 將導(dǎo)致錯(cuò)誤。解決方案:添加相應(yīng)的文件名
20、KeyError: ‘age’
說(shuō)明:鍵錯(cuò)誤??赡艿脑颍?/p>
- 基于鍵獲取字典的值時(shí),指定的鍵不存在。解決方案:修改為已有的鍵。
- 刪除了不存在的鍵。解決方案:在刪除之前檢查它是否存在。
21、ModuleNotFoundError: No module named‘pymysql’
說(shuō)明:模塊不存在??赡艿脑颍?/p>
- 模塊名稱拼寫(xiě)錯(cuò)誤。解決方案:更正拼寫(xiě)
- 模塊未導(dǎo)入。解決方案:使用
import語(yǔ)句導(dǎo)入模塊。 - 環(huán)境問(wèn)題:有時(shí),雖然已經(jīng)安裝了模塊,但在運(yùn)行代碼的環(huán)境中找不到它。這可能是因?yàn)檎谑褂玫沫h(huán)境中未安裝。解決方案:確保在虛擬環(huán)境中安裝了所使用的模塊。
- 某些模塊可能不支持使用的 Python 版本。解決方案:確保所用 Python 版本與導(dǎo)入模塊兼容。查看模塊文檔以了解它所支持的 Python 版本。
22、NameError:name test’ is not defined
說(shuō)明:在代碼中嘗試使用一個(gè)未定義或不存在的變量或名稱(‘test’),或者在當(dāng)前的作用域內(nèi)無(wú)法找到該名稱??赡艿脑颍?/p>
- 變量或名稱未定義。解決方案:在使用之前,定義變量或名稱。
- 變量可能在不同的作用域內(nèi)定義(例如函數(shù)內(nèi)部或條件塊內(nèi)部),而試圖在該作用域之外訪問(wèn)它。解決方案:如果需要在函數(shù)外部或不同的作用域內(nèi)使用變量,在全局作用域內(nèi)定義它。
23、RecursionEror:maximum rcusion depth exceded in comprison
說(shuō)明:超出最大遞歸深度。解決方案:禁止無(wú)限遞歸,設(shè)置遞歸深度。
24、Timeout error [WinError 10060] No response or response from host after a period of time. Connection attempt failed.
說(shuō)明:連接超時(shí)??赡艿脑颍?/p>
- 數(shù)據(jù)庫(kù)連接超時(shí)。解決方案:檢查數(shù)據(jù)庫(kù)連接配置信息是否正確。
- 請(qǐng)求網(wǎng)址超時(shí)。解決方案:檢查 URL 是否正確且可以訪問(wèn)。
- 連接到 FTP 服務(wù)器超時(shí)。解決方案:檢查用于連接到 FTP 的參數(shù)是否正確。
總結(jié)
到此這篇關(guān)于Python常見(jiàn)的錯(cuò)誤以及其解決方案的文章就介紹到這了,更多相關(guān)Python常見(jiàn)錯(cuò)誤解決內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Python運(yùn)行的17個(gè)時(shí)新手常見(jiàn)錯(cuò)誤小結(jié)
- Python eval的常見(jiàn)錯(cuò)誤封裝及利用原理詳解
- 新手常見(jiàn)Python錯(cuò)誤及異常解決處理方案
- Python初學(xué)者常見(jiàn)錯(cuò)誤詳解
- Python常見(jiàn)錯(cuò)誤:IndexError:?list?index?out?of?range解決
- python中常見(jiàn)錯(cuò)誤及解決方法
- Python3環(huán)境安裝Scrapy爬蟲(chóng)框架過(guò)程及常見(jiàn)錯(cuò)誤
- Python全局變量與global關(guān)鍵字常見(jiàn)錯(cuò)誤解決方案
- Python常見(jiàn)錯(cuò)誤類型及解決方法
相關(guān)文章
Python使用pyfinance包進(jìn)行證券收益分析
在查找如何使用Python實(shí)現(xiàn)滾動(dòng)回歸時(shí),發(fā)現(xiàn)一個(gè)很有用的量化金融包——pyfinance。顧名思義,pyfinance是為投資管理和證券收益分析而構(gòu)建的Python分析包,主要是對(duì)面向定量金融的現(xiàn)有包進(jìn)行補(bǔ)充,如pyfolio和pandas等。pyfinance包含六個(gè)模塊,下面將一一介紹2021-11-11
Python for循環(huán)通過(guò)序列索引迭代過(guò)程解析
這篇文章主要介紹了Python for循環(huán)通過(guò)序列索引迭代過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-02-02
Python實(shí)現(xiàn)將字典內(nèi)容保存到Excel文件的四種方法
Python 中的字典是一個(gè)數(shù)據(jù)集合,其中每個(gè)值對(duì)應(yīng)一個(gè)鍵,它們是無(wú)序的、可變的,并且對(duì)字典中存儲(chǔ)的值和鍵的數(shù)據(jù)類型沒(méi)有限制,本文給大家介紹了Python實(shí)現(xiàn)將字典內(nèi)容保存到Excel文件的四種方法,需要的朋友可以參考下2024-07-07
Python利用模糊哈希實(shí)現(xiàn)對(duì)比文件相似度
對(duì)比兩個(gè)文件相似度,python中可通過(guò)difflib.SequenceMatcher/ssdeep/python_mmdt/tlsh實(shí)現(xiàn),<BR>在大量需要對(duì)比,且文件較大時(shí),需要更高的效率,可以考慮模糊哈希,本文就來(lái)和大家詳細(xì)聊聊2023-01-01
Python實(shí)現(xiàn)輕松找出兩個(gè)列表不同之處
在日常編程中,需要比較兩個(gè)列表并找出它們之間差異是一種常見(jiàn)需求,在本文中,我們將深入探討Python中查找兩個(gè)列表差異值的方法,需要的小伙伴可以參考下2023-12-12
在python中利用numpy求解多項(xiàng)式以及多項(xiàng)式擬合的方法
今天小編就為大家分享一篇在python中利用numpy求解多項(xiàng)式以及多項(xiàng)式擬合的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-07-07
Python獲取linux主機(jī)ip的簡(jiǎn)單實(shí)現(xiàn)方法
這篇文章主要介紹了Python獲取linux主機(jī)ip的簡(jiǎn)單實(shí)現(xiàn)方法,涉及Python使用socket模塊調(diào)用shell命令的相關(guān)技巧,需要的朋友可以參考下2016-04-04
python gensim使用word2vec詞向量處理中文語(yǔ)料的方法
這篇文章主要介紹了python gensim使用word2vec詞向量處理中文語(yǔ)料的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07

