python中缩进是什么

要求严格的代码缩进是python语法的一大特色,就像C语言家族(C、C++、Java等等)中的花括号一样重要,在大多数场合还非常有必要。在很多代码规范里面也都有要求代码书写按照一定的规则进行换行和代码缩进,但是这些要求只是纯粹是方便人(程序员)来阅读、使用或修改的,对于编译器或者解释器而言,完全是视而不见的。

但是对Python解释器而言,每行代码前的缩进都有语法和逻辑上的意义。Python的这个特性,也经常在Python使用者和非Python使用者中引起争论。

实际上,python这种强制的代码缩进,就像一把双刃剑,有好处也有坏处。显然,好处在于在严格要求的代码缩进之下,代码非常整齐规范,赏心悦目,提高了可读性,在一定程度上也提高了可维护性。

但是Python严格的代码缩进,对于从其他语言转过来的人,由于现在计算机和相关专业第一门语言一般都是C/C++或Java,他们的语法风格基本是一致的,所以可能要一段时间来适应。python代码缩进十分严格,如果不按其规则书写代码,就可能会出现语法错误,例如unexpected indent之类的,甚至有时也会出现逻辑错误。

以C语言作为比较:

如下代码段:

    if(True)
    {
        x=1;//语句1
        y=2;//语句2
    }

在C语言中,以大括号“{}”作为代码块的标识,上面的“语句1”“语句2”就是属于“if ”条件语句的代码块,在大括号中,不用考虑语句的缩进,只要语句在“if”的大括号中,那它就属于“if”的代码块。但是为了提高代码的可阅读性,一般都要求有格式良好的缩进!

在python中,由于代码缩进而出现语法错误或逻辑错误,一般有两种情况:一是混用tab和空格缩进,二是编辑器对缩进的处理各异。这里给出一个例子,代码是这样的:

    def test():
    ——if True:
    ————print("a")
    ——else:
    ————print("b")
   .....print("c")

在上面代码中,我用“——”表示一个“TAB”键,用“.”表示一个空格。一般情况下会认为上面会输出a,但实际输入ac,这是用Notepad++这类编辑器会出现的情况,原因是TAB键被编辑器当作4个空格了,所以看起来对其的代码,在编辑器翻译之后却不再属于同一个代码块,因为缩进不一样!但是在pycharm中,按照上面的书写方式,可以输出预期的结果,可能是pycharm把一个TAB当成两个空格的原因。

相关

python中缩进是什么