一递归和迭代
递归 自己调用自己
迭代 能用for循环遍历
二迭代器协议
1.迭代器协议是:对象必须提供一个next方法,执行该方法要么返回迭代的下一项,要么就引起一个 StopIteration异常,以终止迭代(只能往后走 不能往前推)
2.可迭代对象: 实现了 迭代器协议对象(如何实现: 对象内部定义了一个 __iter__() 方法
3.协议是一种约定,可迭代对象 实现了迭代器协议,python的内部工具(如for循环, sum , min max函数)使用迭代器协议访问对象
三 Python中强大的for循环机制
for循环的本质: 循环所有对象,全都是使用迭代器协议
字符串。列表 元组 字典 集合 文件对象 都不是可迭代对象 因为没有 next方法 只不过是 for循环式,
调用了他们内部的 __iter__方法,把他们变成了可迭代对象
l = [1,2,3]
for i in l : i_l调用了l.__iter__ 并 捕捉了 StopIteration异常
l.__iter__()
实际上 next方法-----> iter_l.__next__()
# 遵循迭代器协议,生成可迭代对象
总结:for循环可以循环 序列化对象 (字符串, 列表 元组)
也可以遍历 非序列对象(集合,文件对象 字典等等)