Python 多行 if 条件
Neema Muganga
2023年10月10日
Python 中 if
语句中的多行条件在 PEP8 中提供了各种允许的方式。
首先,不应将多个条件语句放在一行中。相反,将多条件的这一行拆分并将它们括在括号中。
# do not define the multiple conditions in a single line like this
if (
firstcondition == "something"
and secondcondition == "something else"
and thirdcondition == "something different"
):
# something_to_be_done
pass
PEP8 指导使用连续行来分隔多行条件语句。这些行应垂直对齐,并从新行的开头以四个空格缩进。右括号和冒号清楚地显示了条件的结束。
显然,每当你将两个字符的关键字(如 if
)、一个空格和一个左括号组合在一起时,Python 就有一种自动创建四空格缩进的方法。因此,不需要在条件中断中添加额外的缩进。
示例代码:
if (this_matches_condition, this_also_matches_condition): # end of conditions
get_something_done()
如果你像上面一样设置多个条件的样式,则具有代码易读性的优点。它还使复杂的条件具有更清晰的表达。
在条件中包含诸如 and
和 or
之类的逻辑运算符关键字的情况下,根据 PEP8 指南,强烈建议将逻辑运算符(和,或)放在继续条件行之前。这种风格被称为 Knuth 风格。由于 Python 设置的自动四空格缩进,它增强了条件的可读性,使所有条件垂直排列。
它还使括号内的条件更加明显,并带来了短路评估的优势。
例子:
if sttmt1 and (sttmt2 or sttmt3) or name == "Goodman":
something_happens
设置这些多行条件语句样式的另一种方法是定义一个变量并将这些条件表达式分配给它。但是,并不完全鼓励这种方法,因为它往往会限制后续的重构。但是,如果使用变量,代码看起来会更清晰,并且还可以更好地理解程序控制流程。
condition_list = (
condition_one == "number1"
and condition_two == "number2"
and condition_three == "number3"
)
if conditions_list:
# implement_something
pass
else:
# something_else _is _done
pass
上面代码中的 if 语句确保当且仅当整个 condition_list
为真时才执行某些操作。否则,即使 condition_list
中的条件之一为假,也会执行其他操作。
你可以将一对额外的括号括在条件周围以明显地显示条件表达式。
if sttmt1 and (sttmt2 or sttmt3) or name == "Goodman":
something_happens