当您使用一个对象进入for循环并返回迭代器时,__iter__方法被调用。我们通常不会保持一个指向迭代器的名称,但是如果这样做了,我们可以停止迭代,执行其他操作,然后继续迭代。在
获取迭代器对象的最佳方法是使用内置的iter函数:a_list = ['a', 'b', 'c', 'd']
iter_list = iter(a_list)
for val in iter_list:
print(val) # do_stuff(val)
if val == 'b': # some_condition!
break
print('taking a break') # do_stuff()
for val in iter_list:
print(val) # continue_doing_stuff(val)
显示:
^{pr2}$
iter(obj)只返回obj.__iter__()的结果,它应该是实现.__next__()方法的迭代器。在
每次迭代都会调用__next__方法,返回对象(在本例中是一个字符)
如果您想自己调用__next__方法,而不是让for循环调用它,那么应该使用内置的next函数:a_list = ['a', 'b', 'c', 'd']
iter_list = iter(a_list)
print(next(iter_list)) # do_stuff(val)
print(next(iter_list))
print('taking a break') # do_stuff()
print(next(iter_list)) # continue_doing_stuff(val)
print(next(iter_list))
印刷品:
^{pr2}$