IndentationError:unindent does not match any other indentation level



     雖然衆所周知,Python裏面的條件結構if與循環結構for是沒有括號的{},對於是否在結構體的內的語句識別,主要利用句子前的遞進關係,判斷語句是否在結構體內,如果一旦出現遞進不一致的問題,Python就會出現indentationerror的遞進報錯,這屬於非程序範疇的,主要是沒有好好排版的問題,但是,一些就算排好版的程序,也會出現這樣情況,主要是遞進的字符看起來一致,實質不一致,一個Python程序利用多個編輯器所編輯所造成的。常見的情況,就是這個Python程序原本是用Eclipse中的Pydev來編寫,然而因爲發現某個地方沒寫好,用notepad++改了一下,結果就出現報錯了。用一個例子來說明這個問題。
如下圖的程序,看起來絕對不會有問題,就是把i從0-9輸出,而且for結構體裏面的語句遞進也是剛好對齊的,很明顯是for結構體裏面的語句共同遞進一個tab
但是,在命令行輸入如下命令卻出現如下的indentationerror,遞進錯誤。
這是由於Notapad++中對tab的處理與Eclipse對tab的不同所導致。之前的第1行與第3行是用Eclipse中的Pydev程序寫的,我第2行的print "i:",是後來爲了輸出美觀才用Notepad++添加上去的。如下圖,通過Notepad中的,【視圖】->【顯示符號】->【顯示空格與製表符】,可以很清楚地看到Notepad++對Tab的處理,與Eclipse中的Pydev有着根本性的不同。純Notepad++產生的Tab,處理爲\t,是可以運行的,純Eclipse中的Pydev產生的Tab,處理爲4個空格也是可以運行的,但是兩者混合起來卻是不可以的。
這個不是說,原本用Eclipse中的Pydev寫的Python,用Notapad++程序修改每次遞進都要敲4個空格。
可以通過如下的方式來解決。
通過:【設置】->【首選項】->【製表符設置】,一些舊版本的Notepad++,則是【設置】->【首選項】->【語言】。
將“轉換爲空格”勾上,以後在Notepad++按Tab就自動產生4個空格,而不是\t,這就可以與Eclipse中的Pydev產生的空格相一致。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章