python - iter(x) 和 x.__iter__() 有什么区别?

标签 python

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/

相关文章:

python - 使用 Pandas 数据框计算累积返回

python - 当不存在行时,sqlalchemy func.sum() 返回 None

python - 子进程期间的引用文件 (Python)

python - 在python中使用正则表达式匹配文件名

python - BeautifulSoup - 提取属性值

python - 根据另一列向日期添加一天

python - 在 matplotlib 中向时间轴添加填充

python - 为什么在写入 csv 时 Pandas 会删除前导零?

python - 打印所有ListBox TKinter中的值和键

python - 设置模拟 asyncio.coroutine 的返回值