HOWTO · Python
Python 多行 if 條件
Python 多行 if 條件
本頁內容
要在 Python 中將一個長 if 條件跨行拆分,可以將運算式用括號括起來。這樣 Python 就允許隱含續行,因此您不需要在每行末尾加反斜線。續行的縮排是為了可讀性而選擇的;Python 不會自動為您加入四個空格。像往常一樣,將陳述式的主體保持在 if 下方縮排。
使用括號拆分長 if 條件
對於無法舒適地放在一行中的條件,括號是最清晰的預設選擇。它們讓您可以在有意義的位置斷開運算式,並將右括號放在冒號旁邊。選擇能讓運算式易於瀏覽的續行縮排,並在檔案中一致地使用相同的模式。
將布林運算子放在續行之前
PEP 8 建議在二元運算子之前斷行,這樣 and 或 or 會位於下一續行的開頭。這使得每個附加檢查都易於發現。這種放置是一種格式選擇:括號和換行不會改變 Python 對運算式的分組方式,也不會改變 and 和 or 的短路方式。請參閱 PEP 8 關於多行 if 陳述式的指南。
下面是一個包含三個檢查的緊湊範例。主體屬於 if;括號內的縮排有助於讀者瀏覽運算式。
plan = {"active": True, "paid": True, "seats": 4}
if (
plan["active"]
and plan["paid"]
and plan["seats"] >= 3
):
print("Eligible for the team plan.")
else:
print("Choose another plan.")
使用所示的值,三個檢查都為真,因此程式會印出:
Eligible for the team plan.
對於混合邏輯,使用括號使預期的分組可見,例如 (is_member or has_invitation) and account_is_active。如果前面的檢查應該保護後面的檢查,請保持該順序:and 和 or 以短路行為從左到右求值。僅憑格式並不能使不同的分組等效。
僅在需要時使用反斜線
反斜線可以明確地延續一條陳述式,但它比括號更脆弱。該標記必須是其物理行上的最後一個字元;其後的尾隨空格或後續編輯都可能破壞延續。例如,一行可以在下一個條件之前以 if account_is_active and \ 結尾。對於長條件,優先使用括號,因為它們避免了這種對行尾的依賴,並允許自然的縮排。將反斜線保留給周圍語法不提供隱含續行上下文的情況。
當命名能提高清晰度時為條件命名
當一個條件本身具有有用的含義或會被重複使用時,將其賦給一個描述性名稱,例如 eligible_for_team_plan,然後編寫 if eligible_for_team_plan:。這為 if 陳述式提供了一個簡潔、有意義的測試,並可以使周圍的控制流更易於閱讀。在賦值和使用該名稱的所有地方都保持一致。
命名變數是一種風格選擇,不是一條反對重構的規則。對於只使用一次的短運算式,將帶括號的條件放在 if 旁邊可能更清晰;對於更長或重複使用的規則,名稱可能更好地傳達意圖。遵循專案的慣例,選擇能讓另一位開發者最容易理解該決策的形式。