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产生的空格相一致。
已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页