私信  •  关注

Cosmittus

Cosmittus 最近创建的主题
Cosmittus 最近回复了
4 年前
回复了 Cosmittus 创建的主题 » IF语句给出错误的结果python[duplicate]

作为@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”并请求项。