【问题】
一个python脚本,本来都运行好好的,然后写了几行代码,而且也都确保每行都对齐了,但是运行的时候,却出现语法错误:
IndentationError: unindent does not match any outer indentation level
【解决过程】
1.对于此错误,最常见的原因是,的确没有对齐。但是我根据错误提示的行数,去代码中看了下,没啥问题啊。
都是用TAB键,对齐好了的,没有不对齐的行数啊。
2.以为是前面的注释的内容影响后面的语句的语法了,所以把前面的注释也删除了。
结果还是此语法错误。
3.后来折腾了半天,突然想到了,把当前python脚本的所有字符都显示出来看看有没有啥特殊的字符。
当前用的文本编辑器Notepad++,好像有个设置,可以显示所有的字符的。
找到了,在:
视图 -> 显示符号 -> 显示空格与制表符
然后就看出问题来了:
原来错误的行数是1580行:
但是源码的1580行的对齐用的是点点点的空格,是和前面的几行的对齐所用的箭头表示的TAB键,是不匹配的,即代码的对齐,混用了TAB键和空格:
而新的Python语法,是不支持的代码对齐中,混用TAB和空格的。所以出现上述错误提示了。
知道原因了,解决起来就简单了:
去把对应的TAB,都改为空格,统一一下对齐的风格,即可。
在Notepad++中,去:
设置->首选项:
语言->以空格取代(TAB键):
即可实现,对于以后每次的TAB输入,都自动转换为4个空格。
【总结】
Python中遇到IndentationError,以后第一时间就要想到,是不是由于TAB键和空格混搭使用了。
估计很多人也都是此类原因导致的。记得统一一下就好。
下面是其他网友的补充
今天在网上copy的一段代码,代码很简单,每行看起来该缩进的都缩进了,运行的时候出现了如下错误:
【解决过程】
1.对于此错误,最常见的原因是,的确没有缩进。根据错误提示的行数,去代码中看了下,看起来没有什么问题呀,都有缩进,而且语法也没有错误呀。
2.仔细研究了下代码,发现真的看不出什么问题,突然想到了,把当前python脚本的所有字符(包括空格和tab字符)都显示出来看看到底有没有缩进或者是其他特殊的字符。
当前用的文本编辑器Notepad++,有个设置,可以显示所有的字符的。
在:
视图 –> 显示符号 –> 显示空格与制表符
这样就可以看到我们Python代码的到底有没有该缩进的都缩进了。
最终发现代码报错原因还真是出在这里,错误提示的这行看起来是缩进了,实际上确没有缩进,这就是问题的根源所在。
发现了个问题,发现copy过来的Python代码都没有进行缩进,当我们copy别人的代码时,缩进这点需要额外注意。不要看起来代码缩进了就感觉ok了,实际上是没有缩进的。
总结
使用(多行注释)三个引号的注释, 一定要注意缩进要与上下文保持一致
即同层次代码是几个缩进,就几个缩进。
报上面这个错误的原因是自己在注释'''test'''前面只有三个空格导致。
同层代码是4个空格,偏偏要写8个空格,也会报错的。
对应的单行注释##, 则对缩进没有任何要求。
可能是三个引号是属于字符串的原因吧
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对小牛知识库的支持。如果你想了解更多相关内容请查看下面相关链接
本文向大家介绍Python出现segfault错误解决方法,包括了Python出现segfault错误解决方法的使用技巧和注意事项,需要的朋友参考一下 本文分析了Python出现segfault错误解决方法。分享给大家供大家参考,具体如下: 最近python程序在运行过程中偶尔会引发系统segfault的错误,而且是在不定期不同代码段时发生的,所以单步调试没办法确定是哪一行代码的问题。 段错误,
本文向大家介绍ORACLE出现错误1033和错误ORA-00600的解决方法,包括了ORACLE出现错误1033和错误ORA-00600的解决方法的使用技巧和注意事项,需要的朋友参考一下 在非法关机以后,Oracle数据库经常会出现这个错误: 这个显然是数据库没有办法启动,但是数据库服务还是可以启动,而程序则无法连接数据库。 首选找问题要看看数据库BDUMP目录下的ALERT文件具体报什么错误 最
本文向大家介绍python使用super()出现错误解决办法,包括了python使用super()出现错误解决办法的使用技巧和注意事项,需要的朋友参考一下 python使用super()出现错误解决办法 当我们在python的子类中调用父类的方法时,会用到super(),不过我遇到了一个问题,顺便记录一下。 比如,我写了如下错误代码: 输出报错: google之后发现,python在2.2前后有新
本文向大家介绍python出现"IndentationError: unexpected indent"错误解决办法,包括了python出现"IndentationError: unexpected indent"错误解决办法的使用技巧和注意事项,需要的朋友参考一下 python出现"IndentationError: unexpected indent"错误解决办法 Python是一种对缩进非常
本文向大家介绍Python中MYSQLdb出现乱码的解决方法,包括了Python中MYSQLdb出现乱码的解决方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Python中MYSQLdb出现乱码的解决方法,分享给大家供大家参考。具体方法如下: 一般来说,在使用mysql最麻烦的问题在于乱码。 查看mysql的编码: 命令: 可以看到如下结果: character_set_client
本文向大家介绍Redis 出现错误1067的解决办法,包括了Redis 出现错误1067的解决办法的使用技巧和注意事项,需要的朋友参考一下 Redis 出现错误1067的解决办法 一、问题描述: 在Windows启动Redis服务时,发生如下错误: 在Windows CMD命令行启动时提示: 二、解决方案: 产生这个问题(Redis服务无法启动)的原因是因为在配置文件(redis.wi