python中的for循环和while循环(python中for循环的底层实现)
在python中 ,存在2种循环方式:for循环和while循环 。
while循环的实现很简单 , 其本质就是一个条件语句 ,自定义条件 ,当条件满足的时候 ,不断执行while代码块 。
但是for循环 ,究竟是怎么回事呢?说到for循环 ,那么就不能不讲到迭代了 。
迭代
python中迭代对象分2种:迭代器对象(Iterator) 、可迭代对象(Iterable) 。
tips:如何判断一个对象是迭代器对象还是可迭代对象?
fromcollectionsimportIterable,Iteratorisinstance(object , class) ,第一个参数为对象 ,第二个参数为类名;返回值为True ,即对象为:
相关推荐:《Python视频教程》
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循环自动处理该异常,跳出循环 。
相关推荐:
创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!