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