python問題unindent does not match any outer indentation level在pycharm平臺的解決方法

IAMoldpan發表於2017-10-25

python對縮排具有嚴格的要求

稍微一步留神就會發生unindent does not match any outer indentation level的錯誤,發生錯誤的原因一般有三點:


1、程式碼前後縮排量不一致

這裡寫圖片描述

可以看到def前面有紅色小波浪線,說明在這裡出現了縮排錯誤,顯然def前面的註釋縮排量和def不一致(一個為2一個為4),改成一致就好了

這裡寫圖片描述


2、程式碼前後縮排符號不一致

這裡寫圖片描述

上圖中兩個函式的定義前面縮排都是一樣的,但是在x=3後面出現錯誤提示,說明在句附近(前後)出現了縮排錯誤,將滑鼠移到高亮黃色區域或者紅色波浪線錯誤區域都會顯示錯誤資訊:

這裡寫圖片描述

這裡寫圖片描述

從錯誤資訊中可以看到,x=3與下面的縮排不匹配,進一步在第二幅圖中可以看到提示:不連續的縮排,上一行的縮排使用的tab縮排而這一行使用的是sapce縮排,顯然,將def test2前面的縮排改成tab就OK了

這裡寫圖片描述

同樣,將y=3前面的縮排也修改一下就行了

3、tab與space混用

這個很顯然,如果你在一段程式碼前面即使用空格又使用tab進行縮排,自然會發生錯誤,這個時候pycharm會自動進行判斷,根據你設定的預先縮排值(intentaion)進行調整

這裡寫圖片描述

你設定的縮排值上面的設定中進行設定,一般為4,上圖為3。

如果你開啟別人的python程式或者python指令碼,很有可能出現縮排錯誤,這時只要修改錯誤地方的縮排量即可。或者使用全域性替換對程式碼中的空格和縮排進行替換

採用Crtl+H的快捷鍵進行替換即可

這裡寫圖片描述

在上圖中統一將製表符tab(\t)替換為4個空格,注意在替換符號時需要勾選Regex選項,圖中綠色區域為tab區域,黃色區域為空格區域

相關文章