Python块缩进

示例

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

Python使用冒号(:)和缩进来显示代码块的开始和结束位置(如果您来自另一种语言,请不要将其与某种与三元运算符相关的混淆)。也就是说,Python中的块(例如函数,循环,if子句和其他构造)没有结尾标识符。所有块均以冒号开头,然后在其下方包含缩进线。

例如:

def my_function():    #这是一个函数定义。注意冒号(:)
    a = 2             # 该行属于函数,因为它已缩进
    return a          # 该行也属于同一功能
print(my_function())  # 该行在功能块之外

要么

if a > b:             # 如果块从这里开始
    print(a)          # 这是if块的一部分
else:                 # 否则必须处于与
    print(b)          # 该行是else块的一部分

尽管通常不认为这种形式是好的样式,但是可以只将包含单行语句的块放在同一行上:

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

试图与多条语句会更多地做到这一点工作:

if x > y: y = x
    print(y) # IndentationError:意外缩进

if x > y: while y != z: y -= 1  # SyntaxError:语法无效

空块会导致IndentationError。pass当您没有任何内容的块时,请使用(不执行任何操作的命令):

def will_be_implemented_later():
    pass

空格与制表符

简而言之:始终使用4个空格进行缩进。

仅可以使用制表符,但是PEP 8(Python代码的样式指南)指出,最好使用空格。

Python 3.x 3.0

Python 3不允许混合使用制表符和空格进行缩进。在这种情况下,将生成编译时错误:Inconsistent use of tabs and spaces in indentation并且该程序将无法运行。

Python 2.x 2.7

Python 2允许在缩进中混合制表符和空格;强烈建议不要这样做。制表符将先前的缩进完成为8个空格的倍数。由于通常将编辑器配置为将选项卡显示为4个空格的倍数,因此这可能会导致细微的错误。

引用PEP 8:

使用该-t选项调用Python 2命令行解释器时,它会发出有关非法混用制表符和空格的代码的警告。使用-tt这些警告时会出错。强烈建议您使用这些选项!

许多编辑器都有“制表符到空格”配置。配置编辑器时,应区分制表('\ t')和Tab键。

  • 制表应配置为显示8个空格,以匹配语言语义-至少在(偶然)混合缩进是可能的情况下。编辑者还可以自动将制表符转换为空格。

  • 但是,配置编辑器可能会有所帮助,以便按该Tab键将插入4个空格,而不是插入制表符。

可以使用autopep8使混合使用制表符和空格或缩进空格数量不标准的Python源代码符合pep8的要求。(大多数Python安装附带一个功能较弱的替代方法:reindent.py)