Python中出現(xiàn)IndentationError:unindent does not match any outer indentation level錯(cuò)誤的解決方法
【問題】
一個(gè)python腳本,本來都運(yùn)行好好的,然后寫了幾行代碼,而且也都確保每行都對(duì)齊了,但是運(yùn)行的時(shí)候,卻出現(xiàn)語法錯(cuò)誤:
IndentationError: unindent does not match any outer indentation level
【解決過程】
1.對(duì)于此錯(cuò)誤,最常見的原因是,的確沒有對(duì)齊。但是我根據(jù)錯(cuò)誤提示的行數(shù),去代碼中看了下,沒啥問題啊。
都是用TAB鍵,對(duì)齊好了的,沒有不對(duì)齊的行數(shù)啊。
2.以為是前面的注釋的內(nèi)容影響后面的語句的語法了,所以把前面的注釋也刪除了。
結(jié)果還是此語法錯(cuò)誤。
3.后來折騰了半天,突然想到了,把當(dāng)前python腳本的所有字符都顯示出來看看有沒有啥特殊的字符。
當(dāng)前用的文本編輯器Notepad++,好像有個(gè)設(shè)置,可以顯示所有的字符的。
找到了,在:
視圖 -> 顯示符號(hào) -> 顯示空格與制表符
然后就看出問題來了:
原來錯(cuò)誤的行數(shù)是1580行:
但是源碼的1580行的對(duì)齊用的是點(diǎn)點(diǎn)點(diǎn)的空格,是和前面的幾行的對(duì)齊所用的箭頭表示的TAB鍵,是不匹配的,即代碼的對(duì)齊,混用了TAB鍵和空格:

而新的Python語法,是不支持的代碼對(duì)齊中,混用TAB和空格的。所以出現(xiàn)上述錯(cuò)誤提示了。
知道原因了,解決起來就簡單了:
去把對(duì)應(yīng)的TAB,都改為空格,統(tǒng)一一下對(duì)齊的風(fēng)格,即可。
在Notepad++中,去:
設(shè)置->首選項(xiàng):
語言->以空格取代(TAB鍵):
即可實(shí)現(xiàn),對(duì)于以后每次的TAB輸入,都自動(dòng)轉(zhuǎn)換為4個(gè)空格。
【總結(jié)】
Python中遇到IndentationError,以后第一時(shí)間就要想到,是不是由于TAB鍵和空格混搭使用了。
估計(jì)很多人也都是此類原因?qū)е碌?。記得統(tǒng)一一下就好。
下面是其他網(wǎng)友的補(bǔ)充
今天在網(wǎng)上copy的一段代碼,代碼很簡單,每行看起來該縮進(jìn)的都縮進(jìn)了,運(yùn)行的時(shí)候出現(xiàn)了如下錯(cuò)誤:

【解決過程】
1.對(duì)于此錯(cuò)誤,最常見的原因是,的確沒有縮進(jìn)。根據(jù)錯(cuò)誤提示的行數(shù),去代碼中看了下,看起來沒有什么問題呀,都有縮進(jìn),而且語法也沒有錯(cuò)誤呀。
2.仔細(xì)研究了下代碼,發(fā)現(xiàn)真的看不出什么問題,突然想到了,把當(dāng)前python腳本的所有字符(包括空格和tab字符)都顯示出來看看到底有沒有縮進(jìn)或者是其他特殊的字符。
當(dāng)前用的文本編輯器Notepad++,有個(gè)設(shè)置,可以顯示所有的字符的。
在:
視圖 –> 顯示符號(hào) –> 顯示空格與制表符
這樣就可以看到我們Python代碼的到底有沒有該縮進(jìn)的都縮進(jìn)了。
最終發(fā)現(xiàn)代碼報(bào)錯(cuò)原因還真是出在這里,錯(cuò)誤提示的這行看起來是縮進(jìn)了,實(shí)際上確沒有縮進(jìn),這就是問題的根源所在。
發(fā)現(xiàn)了個(gè)問題,發(fā)現(xiàn)copy過來的Python代碼都沒有進(jìn)行縮進(jìn),當(dāng)我們copy別人的代碼時(shí),縮進(jìn)這點(diǎn)需要額外注意。不要看起來代碼縮進(jìn)了就感覺ok了,實(shí)際上是沒有縮進(jìn)的。
總結(jié)
使用(多行注釋)三個(gè)引號(hào)的注釋, 一定要注意縮進(jìn)要與上下文保持一致
即同層次代碼是幾個(gè)縮進(jìn),就幾個(gè)縮進(jìn)。
報(bào)上面這個(gè)錯(cuò)誤的原因是自己在注釋'''test'''前面只有三個(gè)空格導(dǎo)致。
同層代碼是4個(gè)空格,偏偏要寫8個(gè)空格,也會(huì)報(bào)錯(cuò)的。
對(duì)應(yīng)的單行注釋##, 則對(duì)縮進(jìn)沒有任何要求。
可能是三個(gè)引號(hào)是屬于字符串的原因吧
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接
相關(guān)文章
python 實(shí)現(xiàn)返回一個(gè)列表中出現(xiàn)次數(shù)最多的元素方法
今天小編就為大家分享一篇python 實(shí)現(xiàn)返回一個(gè)列表中出現(xiàn)次數(shù)最多的元素方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-06-06
python Matplotlib數(shù)據(jù)可視化(1):簡單入門
這篇文章主要介紹了python Matplotlib的相關(guān)資料,幫助大家入門matplotlib,繪制各種圖表,感興趣的朋友可以了解下2020-09-09
python爬取Ajax動(dòng)態(tài)加載網(wǎng)頁過程解析
這篇文章主要介紹了python爬取Ajax動(dòng)態(tài)加載網(wǎng)頁過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-09-09
python使用hdfs3模塊對(duì)hdfs進(jìn)行操作詳解
這篇文章主要介紹了python使用hdfs3模塊對(duì)hdfs進(jìn)行操作詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-06-06
詳解OpenCV中直方圖,掩膜和直方圖均衡化的實(shí)現(xiàn)
這篇文章主要為大家詳細(xì)介紹了OpenCV中直方圖、掩膜、直方圖均衡化詳細(xì)介紹及代碼的實(shí)現(xiàn),文中的示例代碼講解詳細(xì),需要的可以參考一下2022-11-11
Python TensorFlow介紹與實(shí)戰(zhàn)
這篇文章介紹了Python TensorFlow介紹與實(shí)戰(zhàn),通過本文的介紹,我們不僅了解了TensorFlow的基本概念和安裝方法,還通過線性回歸和卷積神經(jīng)網(wǎng)絡(luò)的實(shí)例,深入探討了 TensorFlow 的使用技巧,TensorFlow 的強(qiáng)大功能和靈活性使其成為深度學(xué)習(xí)領(lǐng)域的重要工具,需要的朋友可以參考下2024-07-07
使用Python對(duì)Csv文件操作實(shí)例代碼
這篇文章主要介紹了使用Python對(duì)Csv文件操作實(shí)例代碼,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2017-05-05
Flask 驗(yàn)證碼自動(dòng)生成的實(shí)現(xiàn)示例
本文主要介紹了Flask 驗(yàn)證碼自動(dòng)生成的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2025-03-03





