Python for迴圈本質

2021-10-09 07:22:11 字數 872 閱讀 7560

我們先來看一下for迴圈的一些簡單應用:

ls=[1

,2,3

]for i in ls:

print

(i)

我們知道這樣可以遍歷地取出這裡面的每乙個元素,但是它的工作原理,我們都是模模糊糊的大概知道是那個樣子。其實for迴圈的工作流程是基於迭代器協議的。為明白他的整個工作流程,我們不得不先看一下迭代器協議。

迭代器協議

2.迭代器:實現了迭代器協議的物件(如何實現:物件內部定義乙個__iter__()方法)

3.協議是一種約定,可迭代物件實現了迭代器協議,python的內部工具(如for迴圈,sum,min,max函式等)使用迭代器協議訪問物件。

注:可以通過__next__取值,就是迭代器

我們接下來就看看,for迴圈的具體工作過程:

for 迴圈在處理這些資料前,會呼叫 __ iter__() 方法,將這些資料轉化為乙個迭代器,然後呼叫迭代器的 __ next__() 方法,並捕獲stopiteration異常,也就實現了遍歷完所有資料就會結束,並不會丟擲這個異常。

我們可以用下面的**來實現for迴圈的功能:

pythonfor迴圈教程 for迴圈

for迴圈 它能夠迭代任何序列的項,例如列表或字串。語法 syntax for iterating var in sequence statements s 如果序列包含表示式列表,則首先對其進行求值。然後,將序列中的第一項分配給迭代變數iterating var 接下來,執行語句塊。列表中的每個專...

Python for 迴圈語句

python for迴圈可以遍歷任何序列的專案,如乙個列表或者乙個字串。語法 for迴圈的語法格式如下 for iterating var insequence statements s 流程圖 例項 usr bin python coding utf 8 forletterin python 第乙...

PYTHON for迴圈練習

1.使用者登陸程式需求 1.輸入使用者名稱和密碼 2.判斷使用者名稱和密碼是否正確?name root passwd westos 3.為了防止暴力破解,登陸僅有三次機會,如果超過三次機會,報錯提示 for i in range 3 name raw input 使用者名稱 passwd raw i...