一般來說,語句依次執行 - 例如,函式中的第一個語句首先執行,然後是第二個語句,依次類推。但是有很多時候需要多次執行同一段程式碼,這就引入了回圈的概念。
程式設計語言提供了允許更複雜的執行路徑的各種控制結構。
迴圈語句允許多次執行語句或語句組。下圖說明了一個迴圈語句流程結構 -
Python程式設計語言提供以下型別的迴圈來處理迴圈需求。
編號 | 迴圈 | 描述 |
---|---|---|
1 | while迴圈 | 在給定條件為TRUE 時,重複一個語句或一組語句。 它在執行迴圈體之前測試狀態。 |
2 | for迴圈 | 多次執行一系列語句,並縮寫管理迴圈變數的程式碼。 |
3 | 巢狀迴圈 | 可以使用一個或多個迴圈在while 或for 迴圈中。 |
迴圈控制語句從正常順序更改執行。 當執行離開範圍時,在該範圍內建立的所有自動物件都將被銷毀。
Python支援以下控制語句。
編號 | 控制語句 | 描述 |
---|---|---|
1 | break語句 | 終止迴圈語句並將執行轉移到回圈之後的語句。 |
2 | continue語句 | 使迴圈跳過其主體的剩餘部分,並立即重新測試其狀態以進入下一次疊代。 |
3 | pass語句 | 當語法需要但不需要執行任何命令或程式碼時,Python中就可以使用pass 語句,此語句什麼也不做,用於表示「佔位」的程式碼,有關實現細節後面再寫 |
下面簡單地看一下迴圈控制語句。
疊代器(Iterator)是允許程式員遍歷集合的所有元素的物件,而不管其具體實現。在Python中,迭代器物件實現了iter()
和next()
兩種方法。
String
,List
或Tuple
物件可用於建立Iterator
。
list = [1,2,3,4]
it = iter(list) # this builds an iterator object
print (next(it)) #prints next available element in iterator
# Iterator object can be traversed using regular for statement
for x in it:
print (x, end=" ")
or using next() function
while True:
try:
print (next(it))
except StopIteration:
sys.exit() #you have to import sys module for this
發生器(generator
)是使用yield
方法產生或產生一系列值的函式。
當一個生成器函式被呼叫時,它返回一個生成器物件,而不用執行該函式。 當第一次呼叫next()
方法時,函式開始執行,直到它達到yield
語句,返回yielded
值。 yield
保持跟蹤,即記住最後一次執行,而第二個next()
呼叫從前一個值繼續。
以下範例定義了一個生成器,它為所有斐波納契數位生成一個疊代器。
#!usr/bin/python3
import sys
def fibonacci(n): #generator function
a, b, counter = 0, 1, 0
while True:
if (counter > n):
return
yield a
a, b = b, a + b
counter += 1
f = fibonacci(5) #f is iterator object
while True:
try:
print (next(f), end=" ")
except StopIteration:
sys.exit()