我是 Python 的新手,我了解可迭代对象和迭代器对象的概念。我知道所有的迭代器都是迭代器本身,但并不是所有的迭代器都是迭代器,就像列表的情况一样。我的问题是,当我们在一个没有定义 next() 方法的可迭代对象上调用 iter() 时,幕后发生了什么。显然 iter() 返回另一个对象, next() 方法定义了它。iter() 如何将参数作为列表并返回属于 python 的内置 iter 类的对象,该类定义了 next() 方法。?谢谢
def python_iterator(list_without_next_method):
class iter2:
def __init__(self, lst):
self.lst=lst
self.n=0
def __nekst__(self):
b=self.lst[self.n]
self.n += 1
return b
iterator_object=iter2(list_without_next_method)
return iterator_object
a=[1,2,3,4,5,6]
iterator=python_iterator(a)
print(iterator.__nekst__())
print(iterator.__nekst__())
print(iterator.__nekst__())
print(iterator.__nekst__())
print(iterator.__nekst__())
print(iterator.__nekst__())
print(iterator.__nekst__())
上面的代码是为了让我自己理解内置的 iter() 如何在幕后工作以创建包含 next() 方法的对象。我将自己的 iter 函数命名为“python_iterator”(类比迭代器())。当调用此函数时,它会执行内置 iter() 将执行的操作,只是在我自己的 next() 函数 (nekst()) 中没有用于 Stopiteration 的代码。
隔江千里
相关分类