for x in y 背后隐藏的 Python 真相
What `for x in y` hides from you – From Scratch Code

长期以为 Python 的 for x in y 只是简单的语法糖,直到我开始用 Rust 从零编写 Memphis 解释器,才被迫直面这个看似简单的问题:for 循环到底在做什么?原来,Python 并非直接遍历列表或字符串,而是通过调用 iter() 获取迭代器,再不断调用 next() 获取值,直到 StopIteration 异常抛出。这一机制解释了为何列表、字符串、range 甚至生成器都能被统一处理。更有趣的是,一旦迭代器被耗尽,它就无法重置,这背后是 iterable 与 iterator 的关键区别。理解这一点,不仅让 Python 的迭代模型不再神秘,也让自定义可迭代对象变得自然流畅。
"for x in y 并不意味着“遍历 y”,而是“询问 y 如何被迭代”。"