【問題】
一個(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ò)誤提示了。
知道原因了硬耍,解決起來就簡(jiǎn)單了:
去把對(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ū)е碌囊蟆S浀媒y(tǒng)一一下就好恩伺。