天天看點

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

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區域,黃色區域為空格區域