天天看点

python 全部缩进一行_Python成为专业人士笔记–程序行空白及tab缩进的作用

python 全部缩进一行_Python成为专业人士笔记–程序行空白及tab缩进的作用

“专业人士笔记”系列目录:

创帆云:Python成为专业人士笔记--强烈建议收藏!每日持续更新!​zhuanlan.zhihu.com

python 全部缩进一行_Python成为专业人士笔记–程序行空白及tab缩进的作用

python中的空白tab缩进

Python使用缩进来定义控制和循环结构,这有助于提高Python的可读性,但是,它要求程序员密切注意空格缩进的使用:因为,编辑器错误的校准可能会导致代码出现意想不到的行为。

Python使用冒号(:)和缩进来显示代码块的开始和结束位置(如果你使用过其他另一种语言,请不要将其与三元运算符相混淆)。

也就是说,Python中的块,如函数、循环、if子句和其他结构,没有专门结束标识符,所有块都以冒号开头,然后包含它下面的对应缩进后的子代码行。

例如:

def my_function(): #  这是一个函数定义。注意冒号(:) 
     a = 2
     return a 
     # 上面2行属于这个函数,因为它是Tab缩进的,返回 return 这一行也属于同一个函数 
 print(my_function())
 #这行代码不属于函数,因为没有用Tab进行缩进
           

或者:

if a > b: # If 语句开始于这里
    print(a)
    #属于if里一部分
 else: # else 语句和if是同一级
    print(b)
    #属于else里面的子语句
           

只包含一行语句的块可以放在同一行上,尽管这种形式通常被认为是不好的代码习惯:

if a > b: print(a)
else: print(b)
           

尝试使用多个语句来实现这一点是行不通的:

if x > y: y = x
   print(y)
 # IndentationError: unexpected indent 未知的间隔

if x > y: while y != z: y -= 1
 SyntaxError: invalid syntax 语法错误
           

空块会导致IndentationError错误。当您有一个没有内容的块时,使用pass(一个什么都不做的命令) :

def will_be_implemented_later():
    pass
           

Spaces(空格) 对比. Tabs(制表符)

简而言之:

始终使用4个空格作为缩进,只使用制表符当然也可以,但是Python代码的样式指南PEP 8中声明空格是首选的(但我个人觉得很麻烦,我一般都用Tab)。

Python 3不允许混合使用制表符和空格进行缩进,在这种情况下,会产生编译时错误 : 在缩进中不一致地使用制表符和空格,程序将无法运行。

Python 2允许在缩进中混合制表符和空格,但强烈不建议这样做。制表符完成前面的缩进操作,会变成8个空格的倍数,由于编辑器通常被配置为以4个空格的倍数显示选项卡,这可能会导致一些细微的错误。

许多编辑器都有“制表符到空格”的配置。在配置编辑器时,应该区分制表符(‘t’)和制表键:制表符应该配置为显示8个空格,以匹配语言语义——至少在可能出现(意外)混合缩进的情况下, 编辑器还可以自动将制表符转换为空格 。

然而,往往直接将编辑器中的Tab键配置为自动插入4个空格,而不是插入制表符,这样更符合python程序开发中的简便性要求

用制表符和空格混合编写的Python源代码,或者使用非标准数量的缩进空格,可以使用autopep8(大多数Python安装都提供了一个不太强大的替代方案:reindent.py包来处理这个问题)

综上,我个人建议,对于具体替代方案不用做过多研究,只要在pycharm这样的开发环境中,用tab键缩进代码即可,编译能通过,大部分情况下是没有问题的。

今天分享就到这里,

禁止任何形式转载,违者必究

继续阅读