【問題】
一個python腳本,原本都運行好好的,而後寫了幾行代碼,並且也都確保每行都對齊了,可是運行的時候,卻出現語法錯誤:
IndentationError: unindent does not match any outer indentation levelpython
【解決過程】
1.對於此錯誤,最多見的緣由是,的確沒有對齊。可是我根據錯誤提示的行數,去代碼中看了下,沒啥問題啊。
都是用TAB鍵,對齊好了的,沒有不對齊的行數啊。
2.覺得是前面的註釋的內容影響後面的語句的語法了,因此把前面的註釋也刪除了。
結果仍是此語法錯誤。
3.後來折騰了半天,忽然想到了,把當前python腳本的全部字符都顯示出來看看有沒有啥特殊的字符。web
當前用的文本編輯器Notepad++,好像有個設置,能夠顯示全部的字符的。
找到了,在:
視圖 -> 顯示符號 -> 顯示空格與製表符編輯器
而後就看出問題來了:
原來錯誤的行數是1580行:spa
可是源碼的1580行的對齊用的是點點點的空格,是和前面的幾行的對齊所用的箭頭表示的TAB鍵,是不匹配的,即代碼的對齊,混用了TAB鍵和空格:orm
而新的Python語法,是不支持的代碼對齊中,混用TAB和空格的。因此出現上述錯誤提示了。ci
知道緣由了,解決起來就簡單了:
去把對應的TAB,都改成空格,統一一下對齊的風格,便可。
在Notepad++中,去:
設置->首選項:get
語言->以空格取代(TAB鍵):源碼
便可實現,對於之後每次的TAB輸入,都自動轉換爲4個空格。it
【總結】io
Python中遇到IndentationError,之後第一時間就要想到,是否是因爲TAB鍵和空格混搭使用了。
估計不少人也都是此類緣由致使的。記得統一一下就好