虽然众所周知,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产生的空格相一致。
【Python|【Python】关于递进错误indentationerror】
文章图片
推荐阅读
- python问题(IndentationError:expected an indented block)
- python|python性能优化全面指南
- python|Python爬虫之mongodb介绍和安装
- python|深入浅出——Mybaties 入门码农避坑必备(一)
- Python|Python ImportError libGL.so.1 cannot open shared object file No such file or directory 解决方案
- 基于WP插件样板的插件返回错误”警告(call_user_func_array()期望参数1为有效的回调”)
- python|python实现opencv学习十七(hough变换检测直线)
- 使用 Python3 脚本给多个人同时发送多个 excel 附件
- Pytorch_python|神经网络的基本组成之卷积层(Conv Layer)&& 利用 Pytorch 搭建神经网络 && 空洞卷积对比普通卷积