The __iter__
当您进入带有对象的 for 循环时调用方法,返回一个迭代器。我们通常不会保留指向迭代器的名称,但如果这样做,我们可以停止迭代,做其他事情,然后恢复迭代。
获取迭代器对象的最佳方法是使用内置的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)
shows:
a
b
taking a break
c
d
iter(obj)
只返回结果obj.__iter__()
,它应该是一个实现的迭代器.__next__()
方法。
That __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))
prints:
a
b
taking a break
c
d