Python中出現(xiàn)IndentationError:unindent does not match any outer indentation level錯誤的解決方法
【問題】
一個python腳本,本來都運(yùn)行好好的,然后寫了幾行代碼,而且也都確保每行都對齊了,但是運(yùn)行的時候,卻出現(xiàn)語法錯誤:
IndentationError: unindent does not match any outer indentation level
【解決過程】
1.對于此錯誤,最常見的原因是,的確沒有對齊。但是我根據(jù)錯誤提示的行數(shù),去代碼中看了下,沒啥問題啊。
都是用TAB鍵,對齊好了的,沒有不對齊的行數(shù)啊。
2.以為是前面的注釋的內(nèi)容影響后面的語句的語法了,所以把前面的注釋也刪除了。
結(jié)果還是此語法錯誤。
3.后來折騰了半天,突然想到了,把當(dāng)前python腳本的所有字符都顯示出來看看有沒有啥特殊的字符。
當(dāng)前用的文本編輯器Notepad++,好像有個設(shè)置,可以顯示所有的字符的。
找到了,在:
視圖 -> 顯示符號 -> 顯示空格與制表符
然后就看出問題來了:
原來錯誤的行數(shù)是1580行:
但是源碼的1580行的對齊用的是點(diǎn)點(diǎn)點(diǎn)的空格,是和前面的幾行的對齊所用的箭頭表示的TAB鍵,是不匹配的,即代碼的對齊,混用了TAB鍵和空格:
而新的Python語法,是不支持的代碼對齊中,混用TAB和空格的。所以出現(xiàn)上述錯誤提示了。
知道原因了,解決起來就簡單了:
去把對應(yīng)的TAB,都改為空格,統(tǒng)一一下對齊的風(fēng)格,即可。
在Notepad++中,去:
設(shè)置->首選項(xiàng):
語言->以空格取代(TAB鍵):
即可實(shí)現(xiàn),對于以后每次的TAB輸入,都自動轉(zhuǎn)換為4個空格。
【總結(jié)】
Python中遇到IndentationError,以后第一時間就要想到,是不是由于TAB鍵和空格混搭使用了。
估計很多人也都是此類原因?qū)е碌?。記得統(tǒng)一一下就好。
下面是其他網(wǎng)友的補(bǔ)充
今天在網(wǎng)上copy的一段代碼,代碼很簡單,每行看起來該縮進(jìn)的都縮進(jìn)了,運(yùn)行的時候出現(xiàn)了如下錯誤:
【解決過程】
1.對于此錯誤,最常見的原因是,的確沒有縮進(jìn)。根據(jù)錯誤提示的行數(shù),去代碼中看了下,看起來沒有什么問題呀,都有縮進(jìn),而且語法也沒有錯誤呀。
2.仔細(xì)研究了下代碼,發(fā)現(xiàn)真的看不出什么問題,突然想到了,把當(dāng)前python腳本的所有字符(包括空格和tab字符)都顯示出來看看到底有沒有縮進(jìn)或者是其他特殊的字符。
當(dāng)前用的文本編輯器Notepad++,有個設(shè)置,可以顯示所有的字符的。
在:
視圖 –> 顯示符號 –> 顯示空格與制表符
這樣就可以看到我們Python代碼的到底有沒有該縮進(jìn)的都縮進(jìn)了。
最終發(fā)現(xiàn)代碼報錯原因還真是出在這里,錯誤提示的這行看起來是縮進(jìn)了,實(shí)際上確沒有縮進(jìn),這就是問題的根源所在。
發(fā)現(xiàn)了個問題,發(fā)現(xiàn)copy過來的Python代碼都沒有進(jìn)行縮進(jìn),當(dāng)我們copy別人的代碼時,縮進(jìn)這點(diǎn)需要額外注意。不要看起來代碼縮進(jìn)了就感覺ok了,實(shí)際上是沒有縮進(jìn)的。
總結(jié)
使用(多行注釋)三個引號的注釋, 一定要注意縮進(jìn)要與上下文保持一致
即同層次代碼是幾個縮進(jìn),就幾個縮進(jìn)。
報上面這個錯誤的原因是自己在注釋'''test'''前面只有三個空格導(dǎo)致。
同層代碼是4個空格,偏偏要寫8個空格,也會報錯的。
對應(yīng)的單行注釋##, 則對縮進(jìn)沒有任何要求。
可能是三個引號是屬于字符串的原因吧
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請查看下面相關(guān)鏈接
相關(guān)文章
Python?Pandas讀取Excel日期數(shù)據(jù)的異常處理方法
Excel文件是傳統(tǒng)的數(shù)據(jù)格式,但面對海量數(shù)據(jù)時,用編程的方法來處理數(shù)據(jù)更有優(yōu)勢,下面這篇文章主要給大家介紹了關(guān)于Python?Pandas讀取Excel日期數(shù)據(jù)的異常處理方法,需要的朋友可以參考下2022-02-02Python輕松讀寫TOML文件實(shí)現(xiàn)示例
這篇文章主要介紹了Python輕松讀寫TOML文件實(shí)現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2024-01-01python django 原生sql 獲取數(shù)據(jù)的例子
今天小編就為大家分享一篇python django 原生sql 獲取數(shù)據(jù)的例子,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-08-08Python 實(shí)現(xiàn)數(shù)據(jù)結(jié)構(gòu)-堆棧和隊(duì)列的操作方法
隊(duì)、棧和鏈表一樣,在數(shù)據(jù)結(jié)構(gòu)中非?;A(chǔ)一種數(shù)據(jù)結(jié)構(gòu),同樣他們也有各種各樣、五花八門的變形和實(shí)現(xiàn)方式。這篇文章主要介紹了Python 實(shí)現(xiàn)數(shù)據(jù)結(jié)構(gòu)-堆棧和隊(duì)列的操作方法,需要的朋友可以參考下2019-07-07python實(shí)現(xiàn)騰訊滑塊驗(yàn)證碼識別
這篇文章主要介紹了python如何實(shí)現(xiàn)騰訊滑塊驗(yàn)證碼識別,幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下2021-04-04python獲取系統(tǒng)內(nèi)存占用信息的實(shí)例方法
在本篇文章里小編給大家整理的是關(guān)于python獲取系統(tǒng)內(nèi)存占用信息的實(shí)例方法,有需要的朋友們可以參考學(xué)習(xí)下。2020-07-07Github?Copilot結(jié)合python的使用方法詳解
最近也是聽說github出了一種最新的插件叫做copilot,于是申請了,下面這篇文章主要給大家介紹了關(guān)于Github?Copilot結(jié)合python使用的相關(guān)資料,需要的朋友可以參考下2022-04-04python實(shí)戰(zhàn)教程之OCR文字識別方法匯總
ocr是一種光學(xué)字符識別技術(shù),簡單來說它能夠識別出圖像中的文字并且將其給取出來,下面這篇文章主要給大家介紹了關(guān)于python實(shí)戰(zhàn)教程之OCR文字識別方法的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-05-05