我对像__iter__()
和__next__()
这样的方法的使用有点困惑(我想它们被称为dunders)。
我试图理解迭代器和iterables,并编写了以下代码:
x = (1, 2, 3, 4, 5, 6)
try:
y = x.__iter__()
while 1:
print(y.__next__())
except StopIteration:
print('Iterator has exhausted')
然后,当我使用__iter__
和__next__
作为函数时,得到的代码执行时没有错误:
x = (1, 2, 3, 4, 5, 6)
try:
y = iter(x)
while 1:
print(next(y))
except StopIteration:
print('Iterator has exhausted')
有谁能告诉我如何将它们同时用作方法和函数?它是否适用于所有Dunder
__iter__
方法李>iter
函数(或者,在大多数情况下,您不需要太多控制,只需在for循环中使用它)李>这不仅适用于这一对,还适用于其他dunder方法和相关函数,例如
len()
和__len__()
在后台,
iter
函数只调用传递给它的对象的__iter__
方法。您可能会问:那么,为什么要费心拥有一个iter
函数呢?您可以自己调用__iter__
方法吗?(也许这就是你一开始真正想知道的。)我可以想到两个原因:iter
就是一个例子:正如它的docs所说,它不仅适用于使用__iter__
方法的类型,而且适用于满足容器协议的类型(即__len__
和__getitem__
方法)李>相关问题 更多 >
编程相关推荐