在python中,存在2種迴圈方式:for迴圈和while迴圈。
while迴圈的實現很簡單, 其本質就是乙個條件語句,自定義條件,當條件滿足的時候,不斷執行while**塊。
但是for迴圈,究竟是怎麼回事呢?說到for迴圈,那麼就不能不講到迭代了
迭代
python中迭代物件分2種:迭代器物件(iterator)、可迭代物件(iterable)。
tips:如何判斷乙個物件是迭代器物件還是可迭代物件?
from collections
import iterable, iterator
isinstance(object, class),第乙個引數為物件,第二個引數為類名;返回值為true,即物件為
1.可迭代物件
很多python的資料型別都是可迭代物件:列表、字典、元組、字串等
a = [
1, 2,
3]isinstance(a, iterable)
# true
注意:可迭代物件,並不是迭代器物件
2.迭代器物件
迭代器物件依賴iter(args)方法來實現,引數args必須是乙個可迭代物件
a = [
1, 2,
3]b =
iter(a)
isinstance(b, iterator)
# true
isinstance
(b, iterable)
# true
由此可以看出,迭代器物件,同時也是可迭代物件
那麼,這2個物件,到底和for迴圈的關係在**呢?
for迴圈
我們都知道,迭代器物件,實現了__next__()方法,可以不斷呼叫該方法,返回迭代器物件的每個元素
for迴圈的物件,必須是可迭代物件。而
在底層,所有的可迭代物件均內建了__iter__()方法,返回值為迭代器物件。
此時,我們便明了了,for迴圈本質上呼叫了可迭代物件的__iter__()方法,得到了該物件對應的迭代器物件,然後無限呼叫__next__()方法,得到物件中的每乙個元素。直到stopiteration異常,代表迭代器中已無下乙個元素,for迴圈自動處理該異常,跳出迴圈。
python中的for迴圈底層原理詳解
一 構建乙個可迭代物件 列表 元組 字典等 tuple01 dict01自帶有 iter 屬性,即為可迭代物件 tuple01 stay hungry stay foolish keep looking,don t sate hobbies dict01 二 用for迴圈來進行迭代 1 如下所示 f...
for迴圈 底層工作原理
for 迴圈是對容器進行迭代的過程。迭代就是從某個容器物件中逐個地讀取元素,直到容器中沒有更多元素為止。先判斷物件是否為可迭代物件,不是的話直接報錯,丟擲typeerror異常,是的話,呼叫 iter 方法,返回乙個迭代器 不斷地呼叫迭代器的 next 方法,每次按序返回迭代器中的乙個值 迭代到最後...
python中的for迴圈
一 for迴圈概要 for迴圈是乙個通用序列迭代器,可遍歷任何有序的序列物件內的元素,包括字串 列表 元組 其他內建可迭代物件。一般格式 for in if break if continue else 二 for迴圈應用舉例 1 遍歷序列元素 for x in spam eggs ham prin...