python中的for迴圈底層原理詳解

2021-10-02 05:34:22 字數 2970 閱讀 4986

一、構建乙個可迭代物件(列表、元組、字典等)

#tuple01、dict01自帶有__iter__屬性,即為可迭代物件

tuple01 =

("stay hungry stay foolish"

,"keep looking,don't sate"

,"hobbies"

)dict01 =

二、用for迴圈來進行迭代

(1). **如下所示:

for tuple01_i in tuple01:

print

(tuple01_i)

# for dict01_i in tuple01:

# print(dict01_i)

(2). 結果如下:

stay hungry stay foolish

keep looking,don't sate

hobbies

三、使用for迴圈底層原理來進行迭代

(1). **如下所示:

# 1.獲取可迭代物件的迭代器

# iterator = tuple01.__iter__()

iterator = dict01.__iter__(

)while

true

:try

:# 2.使用迭代器取所有的下乙個元素並顯示

item = iterator.__next__(

)# print(item)

print

(item+

":",dict01[item]

)# 3.遇到異常停止迭代

except stopiteration:

break

(2). 結果如下:

steve jobs:

1001

bill gates:

1002

near object:

1003

四、用for迴圈以及其底層原理來迭代圖形類物件

(1). **如下所示:

#encoding = utf-8

"""@version:3.7

@author:qiu

@file:iter_demo.py

@time:23:18

"""class

graphical

:#圖形類

pass

class

graphicalmanager

:#影象管理器類

def__init__

(self)

: self.__graphs =

defadd

(self,graph)

:# 1.建立可迭代物件,有__iter__方法就是可迭代物件

def__iter__

(self)

:return gradphicaliterator(self.__graphs)

class

gradphicaliterator

:#圖形迭代器類

def__init__

(self,graphs)

: self.__graphs = graphs

self.__index =-1

def__next__

(self)

:#2.建立迭代器,有__next__方法就是迭代器

self.__index +=

1if self.__index >

len(self.__graphs)-1

:raise stopiteration #3.迭代完所有圖形後,停止迭代

return self.__graphs[self.__index]

graph_m = graphicalmanager(

)graph_m.add(graphical())

graph_m.add(graphical())

graph_m.add(graphical())

#for迴圈遍歷所有影象類物件

for graphical_i in graph_m:

print

("1.影象物件:"

,graphical_i)

#for迴圈底層原理遍歷所有影象類物件

iterator = graph_m.__iter__(

)while

true

:try

: item = iterator.__next__(

)print

("2.圖形物件:"

,item)

except stopiteration:

break

(2). 結果如下:

1

.影象物件: <__main__.graphical object at 0x0000016f03b42f08

>

1.影象物件: <__main__.graphical object at 0x0000016f03b42f48

>

1.影象物件: <__main__.graphical object at 0x0000016f03b42f88

>

2.圖形物件: <__main__.graphical object at 0x0000016f03b42f08

>

2.圖形物件: <__main__.graphical object at 0x0000016f03b42f48

>

2.圖形物件: <__main__.graphical object at 0x0000016f03b42f88

>

python中for迴圈的底層實現機制 迭代

在python中,存在2種迴圈方式 for迴圈和while迴圈。while迴圈的實現很簡單,其本質就是乙個條件語句,自定義條件,當條件滿足的時候,不斷執行while 塊。但是for迴圈,究竟是怎麼回事呢?說到for迴圈,那麼就不能不講到迭代了 迭代 python中迭代物件分2種 迭代器物件 iter...

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...