if
語句用於有條件的執行,if
語句執行有個特點,它是從上往下判斷,如果在某個判斷上是true
,把該判斷對應的語句執行後,就忽略掉剩下的elif
和else
while
語句用於在表示式保持為真的情況下重複地執行,這將重複地檢驗表示式,並且如果其值為真就執行第乙個子句體;如果表示式值為假(這可能在第一次檢驗時就發生)則如果else
子句體存在就會被執行並終止迴圈。。
for
語句用於對序列(例如字串、元組或列表)或其他可迭代物件中的元素進行迭代
表示式列表會被求值一次;它應該產生乙個可迭代物件。 系統將為expression_list
的結果建立乙個迭代器,然後將為迭代器所提供的每一項執行一次子句體,具體次序與迭代器的返回順序一致。當所有項被耗盡時 (這會在序列為空或迭代器引發stopiteration
異常時立刻發生),else
子句的子句體如果存在將會被執行,並終止迴圈。
註解當序列在迴圈中被修改時會有乙個微妙的問題(這只可能發生於可變序列例如列表中)。 會有乙個內部計數器被用來跟蹤下乙個要使用的項,每次迭代都會使計數器遞增。 當計數器值達到序列長度時迴圈就會終止。 這意味著如果語句體從序列中刪除了當前(或之前)的一項,下一項就會被跳過(因為其標號將變成已被處理的當前項的標號)。 類似地,如果語句體在序列當前項的前面插入乙個新項,當前項會在迴圈的下一輪中再次被處理。 這會導致麻煩的程式錯誤,避免此問題的辦法是對整個序列使用切片來建立乙個臨時副本,例如
try
語句可為一組語句指定異常處理器和/或清理**
except
子句指定乙個或多個異常處理器。 當try
子句中沒有發生異常時,沒有異常處理器會被執行。 當try
子句中發生異常時,將啟動對異常處理器的搜尋。 此搜尋會依次檢查 except 子句,直至找到與該異常相匹配的子句。 如果存在無表示式的 except 子句,它必須是最後乙個;它將匹配任何異常。 對於帶有表示式的 except 子句,該表示式會被求值,如果結果物件與發生的異常「相容」則該子句將匹配該異常。 乙個物件如果是異常物件所屬的類或基類,或者是包含有相容該異常的項的元組則兩者就是相容的。如果在對 except 子句頭中的表示式求值時引發了異常,則原來對處理器的搜尋會被取消,並在周邊**和呼叫棧上啟動對新異常的搜尋(它會被視作是整個
try
語句所引發的異常)。當找到乙個匹配的 except 子句時,該異常將被賦值給該 except 子句在
as
關鍵字之後指定的目標,如果存在此關鍵字的話,並且該 except 子句體將被執行。 所有 except 子句都必須有可執行的子句體。 當到達子句體的末尾時,通常會轉向整個 try 語句之後繼續執行。 (這意味著如果對於同一異常存在有巢狀的兩個處理器,而異常發生於內層處理器的 try 子句中,則外層處理器將不會處理該異常。)當使用
as
將目標賦值為乙個異常時,它將在 except 子句結束時被清除。 這就相當於被轉寫為
如果存在
finally
,它將指定『清理』處理器。try
子句會被執行,包括任何except
和else
子句。 如果在這些子句中發生任何未處理的異常,該異常會被臨時儲存。finally
子句將被執行。 如果存在被儲存的異常,它會在finally
子句的末尾被重新引發。 如果finally
子句引發了另乙個異常,被儲存的異常會被設為新異常的上下文。 如果finally
子句執行了return
或break
語句,被儲存的異常會被丟棄:函式的返回值是由最後被執行的
return
語句所決定的。 由於finally
子句總是被執行,因此在finally
子句中被執行的return
語句總是最後被執行的
with
語句用於包裝帶有使用上下文管理器 (參見 with 語句上下文管理器 一節) 定義的方法的**塊的執行。這允許對普通的try
...except
...finally
使用模式進行封裝以方便地重用。上下文管理器的典型用法包括儲存和恢復各種全域性狀態,鎖定和解鎖資源,關閉開啟的檔案等等。帶有乙個「專案」的
with
語句的執行過程如下:對上下文表示式 (在
with_item
中給出的表示式) 求值以獲得乙個上下文管理器。載入上下文管理器的
__exit__()
以便後續使用。發起呼叫上下文管理器的
__enter__()
方法。如果
with
語句中包含乙個目標,來自__enter__()
的返回值將被賦值給它。註解
with
語句會保證如果__enter__()
方法返回時未發生錯誤,則__exit__()
將總是被呼叫。 因此,如果在對目標列表賦值期間發生錯誤,則會將其視為在語句體內部發生的錯誤。 參見下面的第 6 步。執行語句體。
發起呼叫上下文管理器的
__exit__()
方法。 如果語句體的退出是由異常導致的,則其型別、值和回溯資訊將被作為引數傳遞給__exit__()
。 否則的話,將提供三個none
引數。如果語句體的退出是由異常導致的,並且來自
__exit__()
方法的返回值為假,則該異常會被重新引發。 如果返回值為真,則該異常會被抑制,並會繼續執行with
語句之後的語句。如果語句體由於異常以外的任何原因退出,則來自
__exit__()
的返回值會被忽略,並會在該類退出正常的發生位置繼續執行。如果有多個專案,則會視作存在多個
with
語句巢狀來處理多個上下文管理器:等價於參考
python教程 控制流程
一 控制流程用到的運算子 1.身份運算子 is 比較的時物件id,也即是cpython中的位址 2.成員運算子 in 判斷物件是否時某個容器中的值 3.比較運算子 4.邏輯運算子 按優先順序公升序排列 二 判斷語句 1.if語句 條件成立執行 當要進行使用者資訊匹配時,要求使用者輸入使用者名稱和密碼...
python流程控制 python之流程控制
電腦程式在解決某個具體問題時,包括三種情形,即順序執行所有的語句 選擇執行部分的語句和迴圈執行部分語句,這正好對應著程式設計中的三種程式執行結構流程 順序結構 選擇結構和迴圈結構。事實證明,任何乙個能用計算機解決的問題,只要應用這三種基本結構來寫出的程式都能解決。python語言當然也具有這三種基本...
五流程控制函式
五流程控制函式 1.if函式 if else 的效果 select if 10 5,大 小 select last name,commission pct,if commission pct is null,沒將金,哈哈 有將金,嘻嘻 備註 from employees 2.case 函式的使用一,...