Hasty Briefsbeta

双语

What `for x in y` hides from you – From Scratch Code

3 hours ago
  • #Iteration
  • #Programming Concepts
  • #Python
  • Python 的 'for x in y' 循环实际上是通过迭代器协议实现的:它首先调用 iter(...) 获取一个迭代器,然后重复调用 next(...) 来获取值,并在引发 StopIteration 时停止。
  • for 循环语法是一个包装器,隐藏了底层机制,该机制对于所有可迭代对象(如列表、字符串、范围对象和生成器)都是一样的,从而使迭代感觉统一且灵活。
  • 理解这一点表明迭代并不是直接作用于集合本身,而是作用于迭代器,迭代器可以被耗尽(例如,在例子中,第一个循环用尽迭代器后,第二个循环将无法打印任何内容)。
  • 这种设计允许自定义对象通过实现 __iter__() 和 __next__() 方法来参与迭代,并解释了为什么循环中的解包(例如 'for x, y in pairs')不需要特殊逻辑即可工作。