作为@Senderle答案的补充信息(仅供记录),我认为将python看到的场景背后的逻辑可视化是有帮助的
for
在一个
序列类型
".
假设我们有:
lst = [1, 2, 3, 4, 5]
for i in lst:
print(i ** 2)
它实际上将是:
index = 0
while True:
try:
i = lst.__getitem__(index)
except IndexError:
break
print(i ** 2)
index += 1
就是这样,有一种尝试-抓住机制
对于
当我们在序列类型或Iterables上使用它时(虽然有点不同——调用
next()
和
StopIteration
例外)。
*我想说的是,python将跟踪一个名为
index
因此,无论列表发生了什么(删除或添加),python都会增加该变量并调用
__getitem__()
方法使用“this variable”并请求项。