缩进是Python的灵魂
Python是一门独特的语言,它的代码块是通过缩进(Indentation)来标记的(大部分语言都是使用花括号作为代码块的标记),具有相同缩进的多行代码属于同一个代码块。
如果代码莫名其妙的乱缩进,Python解释器就会报错,
因此Pytho也被戏称“需要拿着游标卡尺学习的语言”
Python的开发者有意让违反了缩进规则的程序不能通过编译,以此让程序员养成良好的编程习惯。
并且Python语言利用缩进表示语句块的开始和退出,而非使用{}或者其他字符。
Python中的缩进(Indentation)决定了代码的作用域范围。
这一点和传统的c/c++有很大的不同(传统的c/c++使用花括号花括号{}符决定作用域的范围;python使用缩进空格来表示作用域的范围,相同缩进行的代码是处于同一范围)。
Python中缩进Tab被替换为4个空格,所以可以使用4个空格进行缩进。
但是在实际编程中,最好不要使用空格键进行缩进(容易出错)。
在Python中使用缩进,需要注意几点:
1.不要随便使用Tab键进行缩进(不该缩进别缩进),不在使用空格的地方使用Tab键。 在不该使用缩进的地方使用缩进,就会出现错误。
2.注意观察缩进程度,不同级别的代码缩进的程度不同
3.不建议用空格进行缩进(一个缩进四个空格),缩进的量不对,少了一个空格,就会导致程序的错误。因此建议使用Tab进行缩进,使用空格可能会因为空格数目不对而出现不可预料的错误。
4.不要弄混Tab和空格。一般,空格显示为小圆点,tTab显示为一条直线。
合理使用缩进,使得代码具有美感,有时过多的缩进,也会让人眼花缭乱。所以我们要合理使用缩进,写出高质量的代码。
Python中的每一条语句都有一个缩进级别,并且缩进级别会使用栈的数据结构进行存储。
在开始读取文件之前,
0(表示缩进级别为0,无缩进)会被首先压入栈中。
然后从文件开头到末尾,依次读取每行逻辑代码,
每行逻辑代码的缩进级别都会和栈顶值进行比较,
如果相等,那么什么都不会发生;
如果比栈顶值大的话,那么该行逻辑代码的缩进级别就会被压入栈中,
同时会生成一个缩进标记(INDENT TOKEN);
如果比栈顶值小的话,
那么栈中所有比该行逻辑代码缩进级别大的值都会从栈中移除,
并且还会生成一个扩展标记(DEDENT TOKEN)。
所以,虽然Python语法允许代码块随意缩进几个空格,但是位于同一个代码块中的所有语句必须保持相同的缩进。
出错类型
1.不应该使用空格或Tab缩进的地方使用了空格或Tab
2.不同级别的代码没有缩进
3.缩进量不对,同一代码缩进不统一
4.Tab和空格的混用-----这个问题最难看出来
报错信息:
IndentationError: unexpected indent;
IndentationError: expected an indented block。。。
如果遇到这类报错,
就可能是代码里tab和空格缩进的问题,
需要检查下tab和空格了”。
【解决办法】
1.检查是否不应该使用空格的地方使用了空格或Tab,检查是否有缩进,缩进量是否对,缩进和空格是否有混用
2.注释有时候也会影响,所以注释的缩进也应引起注意
3.尤其对于缩进和空格是否有混用,可以用文本编辑器Notepad++把当前python脚本的所有空格或Tab字符都显示出来查看。
设置见:
视图 -> 显示符号 -> 显示空格与制表符
确保代码内统一使用4或4的倍数个空格,或者统一使用Tab键或多个Tab键,如果运行不通过,可以使用Pycharm来运行,报错信息会很清楚的告诉你是哪一行不对。
Python自带IDLE缩进:
Python IDEL整体代码缩进
左缩进 Ctrl + [
右缩进 Ctrl + ]
加注释 Alt + 3
去注释 Alt + 4

Python的代码块通过缩进来标记,违反缩进规则会导致IndentationError。Python中每个语句都有一个缩进级别,使用栈来存储。缩进不一致、空格和Tab混用是常见错误。解决方案包括检查缩进、空格与Tab的使用,以及使用Python IDE如IDLE或Pycharm辅助调试。
597

被折叠的 条评论
为什么被折叠?



