我知道Python中的*操作符用于解压缩可迭代性,例如解压缩列表。
然而,在实践中,我们也使用*操作符来解压迭代器,但是我还没有找到解释它的文档。
见示例:
>>> a = [1,2,3]
>>> print(a)
[1, 2, 3]可解包迭代
>>> print(*a)
1,2,3解包迭代器
>>> it = iter(a)
>>> print(*it)
1,2,3发布于 2019-09-19 13:21:56
发布于 2018-06-15 16:03:01
这是因为应用于迭代器的iter返回相同的迭代器:
iterator.__iter__()返回迭代器对象本身。这是允许容器和迭代器与for和in语句一起使用的必要条件。此方法对应于Python中的Python类型结构的tp_iter槽。
在表达式列表中使用对象已经导致了迭代器的创建。因此,假设迭代/迭代器协议已经正确实现,func(*iter(foo))具有与func(*foo)相同的效果。
https://stackoverflow.com/questions/50878860
复制相似问题