【Python】关于递进错误indentationerror

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/yongh701/article/details/47951989

虽然众所周知,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产生的空格相一致。


展开阅读全文

没有更多推荐了,返回首页