iter(x)和之间有什么区别x.__iter__()?
根据我的理解,他们都返回一个listiterator对象,但在下面的例子中,我注意到它们不相等:
x = [1, 2, 3]
y = iter(x)
z = x.__iter__()
y == z
False
Run Code Online (Sandbox Code Playgroud)
有没有我不了解迭代器对象的东西?
Iter对象没有基于这种东西的相等性.
也看到了iter(x) == iter(x)回报False.这是因为iter函数(调用它__iter__)返回一个不重载的iter对象,__eq__因此只有True当2个对象相同时才会返回.
没有重载,==与is比较相同.
此外,x.__iter__().__class__ is iter(x).__class__显示在这种情况下,它们返回相同类型的对象.