Python for循环本质
生活随笔
收集整理的這篇文章主要介紹了
Python for循环本质
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
我們先來看一下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總結
以上是生活随笔為你收集整理的Python for循环本质的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python类的静态属性、类方法、静态方
- 下一篇: Python open()函数用法详解