HOWTO · Python
在 Python 中的 if 语句中不执行任何操作
了解如何跳过在 Python 中的 if 语句中编写一些代码
本页内容
Python 要求在 if、elif 或 else 标头后缩进写入一条语句。如果某个分支暂时没有要执行的操作,可以用 pass 语句让分支保持为空,同时使条件语句在语法上完整。它适合作为有意设置的占位符,但不会跳过条件,也不会替你实现行为。
pass 在 if 代码块中的作用
pass 是一条空操作语句:Python 执行到它时不会采取任何操作。之后的执行方式取决于周围的控制流。在 if 分支中,该分支结束后,Python 会继续执行条件语句之后的代码;在循环体中,控制流则可能开始下一次迭代,而不是离开循环。条件仍会照常求值。
语句组不能留空。例如,写下 if ready: 后,若紧接着在相同缩进层级写另一条语句,并不能以此表示该分支为空。如果分支确实有意不执行任何操作,就在其中放入 pass。循环、函数和类定义等其他复合语句也遵循同样的规则:它们的语句组必须包含一条语句,而 pass 可以满足这一要求。
在条件分支中使用 pass
包含 pass 的分支仍然是条件语句的一部分。Python 会求值条件,进入匹配的分支,并在该分支执行完毕后继续执行条件语句之后的代码。前面的条件均为假时,Python 才会考虑 elif 分支;该分支自身的条件也必须为真。else 没有自己的条件;只有前面的 if 和 elif 条件都为假时,才会执行 else 分支。pass 不会使另一个分支运行。
运行以下示例。代码和输出中的可见文本保持原样,因此其中的标签仍为英文:
x = 10
if x > 5:
pass
else:
print("x is not greater than 5")
print("Continue with the rest of the program")
Continue with the rest of the program
当 x 的值为 10 时,条件为真,因此 Python 会进入第一个分支并执行 pass。else 主体会被跳过,最后的 print 语句则会运行。提供的运行记录显示,示例成功完成,退出码为 0,并打印了上方所示的输出。如果把 x 改为 5 或更小的值,else 主体就会在最后一条语句之前运行。
理解示例的输出
示例只在 x > 5 的分支中使用 pass。该分支不会打印任何内容,但也不会停止程序。后面的 print 位于条件语句之外,因此任一分支执行完毕后都会运行。当 x 小于或等于 5 时,else 分支会先输出一条消息,再执行后面的语句。
读懂输出时,这一区别很重要:一个分支中的空操作不会阻止条件语句之后的语句运行。同样,不匹配的分支不会被选中。若要改变程序显示的内容,应在相应分支中加入预期操作,而不要指望 pass 改变条件或影响其他语句。
何时使用 pass,何时选择其他语句
如果某个分支必须存在,但其中的实现有意暂缓,就可以使用 pass,例如在勾勒函数框架或考虑如何处理某种输入时。等行为明确后,再把占位符替换为实际逻辑。在此之前,该分支不会执行任何操作,因此读者应能从周围的名称或简短注释看出保留它的原因。
pass 不能用来在测试或调试时暂时禁用已有代码。它不会保留被禁用的语句,也不会让分支表现得像条件为假一样。调试时若要控制执行流程,可以使用明确的条件或调试器;若要暂时保留代码,可谨慎使用适当的版本控制变更或注释。
当程序需要作出实际响应时,应选择其他语句。使用 return 以结果(或明确地不返回值)退出函数,使用 continue 进入循环的下一次迭代,或使用 break 退出循环。这些语句会改变控制流;pass 不会。如果分支完全不需要单独执行操作,可以考虑简化条件语句,而不是保留空分支。