for循環(huán)的工作原理
可迭代對(duì)象,有__iter__方法
迭代器(iterator)實(shí)現(xiàn)__next__方法和__iter__方法,每次按順序返回一個(gè)值
直接使用for循環(huán)打印range(1,3)
for i in range(1,3):
print('這是通過(guò)for循環(huán)打印出來(lái)的i值:'+str(i))
使用分解代碼模擬for循環(huán)打印range(1,3)
x = range(1, 3) # 用range函數(shù)創(chuàng)建一個(gè)整數(shù)列表,可迭代對(duì)象
iterator = x.__iter__() # 對(duì)列表使用__iter__迭代方法,賦值給變量iterator
i = iterator.__next__() # 對(duì)iterator使用__next__方法,賦值給變量i
print(i) # 1
i = iterator.__next__() # 不斷調(diào)用迭代器的__next__方法,每次都會(huì)按順序返回一個(gè)列表內(nèi)的值
print(i) # 2
i = iterator.__next__() # StopIteration 迭代結(jié)束 在for循環(huán)中該異常會(huì)被Python自動(dòng)處理,不會(huì)暴露出來(lái)

while True:
try:
# 然后調(diào)用對(duì)象的 __next__ 方法,不斷返回元素
value = next(x)
print(value)
# 如果迭代完成,則捕獲異常即可
except StopIteration:
break

浙公網(wǎng)安備 33010602011771號(hào)