iter(x)
和 x.__iter__()
有什么区别?
根据我的理解,它们都返回一个 listiterator
对象,但在下面的示例中,我注意到它们不相等:
x = [1, 2, 3]
y = iter(x)
z = x.__iter__()
y == z
False
关于迭代器对象,我有什么不理解的地方吗?
最佳答案
Iter 对象不具有基于此类事物的相等性。
看到 iter(x) == iter(x)
也返回 False
。这是因为 iter 函数(调用 __iter__
)返回一个不重载 __eq__
的 iter 对象,因此只有当 2 个对象是一样。
在没有重载的情况下,==
与 is
比较相同。
此外,x.__iter__().__class__ 是 iter(x).__class__
表明,在这种情况下,它们返回相同类型的对象。
关于python - iter(x) 和 x.__iter__() 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31590858/