for循环的工作原理
可迭代对象,有__iter__方法
迭代器(iterator)实现__next__方法和__iter__方法,每次按顺序返回一个值
直接使用for循环打印range(1,3)
for i in range(1,3):
print('这是通过for循环打印出来的i值:'+str(i))
使用分解代码模拟for循环打印range(1,3)
x = range(1, 3) # 用range函数创建一个整数列表,可迭代对象
iterator = x.__iter__() # 对列表使用__iter__迭代方法,赋值给变量iterator
i = iterator.__next__() # 对iterator使用__next__方法,赋值给变量i
print(i) # 1
i = iterator.__next__() # 不断调用迭代器的__next__方法,每次都会按顺序返回一个列表内的值
print(i) # 2
i = iterator.__next__() # StopIteration 迭代结束 在for循环中该异常会被Python自动处理,不会暴露出来
while True:
try:
# 然后调用对象的 __next__ 方法,不断返回元素
value = next(x)
print(value)
# 如果迭代完成,则捕获异常即可
except StopIteration:
break