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不允许混合使用制表符和空格进行缩进。在这种情况下,将生成编译时错误:Inconsistent use of tabs and spaces in indentation并且该程序将无法运行。
Python 2允许在缩进中混合制表符和空格;强烈建议不要这样做。制表符将先前的缩进完成为8个空格的倍数。由于通常将编辑器配置为将选项卡显示为4个空格的倍数,因此这可能会导致细微的错误。
引用PEP 8:
使用该-t选项调用Python 2命令行解释器时,它会发出有关非法混用制表符和空格的代码的警告。使用-tt这些警告时会出错。强烈建议您使用这些选项!
许多编辑器都有“制表符到空格”配置。配置编辑器时,应区分制表符('\ t')和Tab键。
制表符应配置为显示8个空格,以匹配语言语义-至少在(偶然)混合缩进是可能的情况下。编辑者还可以自动将制表符转换为空格。
但是,配置编辑器可能会有所帮助,以便按该Tab键将插入4个空格,而不是插入制表符。
可以使用autopep8使混合使用制表符和空格或缩进空格数量不标准的Python源代码符合pep8的要求。(大多数Python安装附带一个功能较弱的替代方法:reindent.py)