Python 的缩进规则是其语法的重要组成部分,它通过缩进来表示代码块的层次结构,而不是像其他语言(如 C 或 Java)那样使用大括号 {}
。以下是 Python 缩进规则的详细说明:
1. 缩进的基本规则
-
代码块的标识:Python 用缩进表示代码块的开始和结束。同一代码块内的语句必须保持相同的缩进量。
-
冒号
:
的作用:在if
、for
、while
、def
、class
等语句末尾需要添加冒号:
,表示下一行开始一个缩进的代码块。 -
缩进单位:可以是空格(推荐)或制表符(Tab),但不能混用。通常建议使用 4 个空格(符合 PEP8 规范)。
2. 缩进的常见场景
示例 1:条件语句(if-else
)
if x > 0:
print("正数") # 属于 if 代码块
else:
print("非正数") # 属于 else 代码块
print("结束") # 不属于任何代码块
示例 2:循环(for
/while
)
for i in range(3):
print(i) # 循环体,缩进一级
if i == 1:
print("找到1") # 嵌套在循环中的 if 代码块,缩进两级
示例 3:函数定义(def
)
def greet(name):
message = "Hello, " + name # 函数体,缩进一级
print(message)
return message
示例 4:类定义(class
)
class Dog:
def bark(self): # 类方法,缩进一级
print("Woof!") # 方法体,缩进两级
3. 缩进的错误类型
错误 1:缺少缩进
if True:
print("会报错") # IndentationError: expected an indented block
错误 2:缩进量不一致
if x > 0:
print("正数")
print("继续检查") # IndentationError: unexpected indent
错误 3:混用空格和 Tab
if True:
print("4个空格") # 使用空格
print("Tab") # 使用 Tab,导致 IndentationError
4. 多行语句的缩进
当一行代码过长需要换行时,可以使用以下方式:
方式 1:括号内的隐式换行
result = (x + y
- z * 2) # 对齐到括号开头或运算符后
方式 2:反斜杠 \
显式换行
long_string = "这是一段非常长的字符串,\
需要换行显示。"
方式 3:悬挂缩进(Hanging Indent)
def long_function_name(
param1, param2,
param3, param4):
print("参数分行书写")
5. 特殊情况
-
空行:空行不影响缩进,但代码块内不能有空行。
-
单行代码块:简单语句可以写在冒号后,用分号分隔,但不推荐。
if x > 0: print("正数")
6. 最佳实践(PEP8 建议)
-
使用 4 个空格作为每级缩进。
-
避免混合空格和 Tab:在编辑器中设置「将 Tab 转换为空格」。
-
对齐方式:
-
函数参数、列表、字典等可垂直对齐。
-
运算符前后换行时,运算符放在行首。
总结
Python 的缩进是强制性的语法规则,直接决定了代码的逻辑结构。遵循一致的缩进风格(如 PEP8)可以提升代码可读性,避免常见的缩进错误。