我們先來看一下for回圈的一些簡單應用:
ls=[1,2,3]
for i in ls:
print(i)
我們知道這樣可以遍歷地取出這里面的每一個元素,但是它的作業原理,我們都是模模糊糊的大概知道是那個樣子,其實for回圈的作業流程是基于迭代器協議的,為明白他的整個作業流程,我們不得不先看一下迭代器協議,
迭代器協議
1.迭代器協議是指:物件必須提供一個next方法,執行該方法要么回傳迭代中的下一項,要么就引起一個StopIteration例外,以終止迭代 (只能往后走不能往前退)
2.迭代器:實作了迭代器協議的物件(如何實作:物件內部定義一個__iter__()方法)
3.協議是一種約定,可迭代物件實作了迭代器協議,python的內部工具(如for回圈,sum,min,max函式等)使用迭代器協議訪問物件,
注:可以通過__next__取值,就是迭代器
我們接下來就看看,for回圈的具體作業程序:
for 回圈在處理這些資料前,會呼叫 __ iter__() 方法,將這些資料轉化為一個迭代器,然后呼叫迭代器的 __ next__() 方法,并捕獲StopIteration例外,也就實作了遍歷完所有資料就會結束,并不會拋出這個例外,
我們可以用下面的代碼來實作for回圈的功能:
'''
遇到問題沒人解答?小編創建了一個Python學習交流QQ群:778463939
尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書!
'''
x=[1,2,3]
x_i=x.__iter__()
try:
while True:
print(x_i.__next__())
except StopIteration:
pass

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/43183.html
標籤:Python
上一篇:python教程: filter()和reduce()函式用法詳解
下一篇:Python全堆疊課程003
