Python为什么如果更改循环内的值,循环行为不会改变

ash*_*kid 1 python

假设我写了一段代码:

for i in range(10):
    print(i)
    i=11
Run Code Online (Sandbox Code Playgroud)

为什么循环现在不终止?

即使我这样做:

n=10
for i in range(n):
    print(i)
    n=0
Run Code Online (Sandbox Code Playgroud)

它不会影响循环吗?

我只是想知道python如何管理循环变量?

iz_*_*iz_ 5

Python for循环基于迭代,而不是条件。它们在StopIteration到达时停止,而不是在某个布尔条件求和时停止False

range创建一个临时范围对象,该对象在迭代过程中不能更改。之后range(10)range(n)或什么是所谓的,这个对象是完全独立的使用了什么来创建它。

您可能期望发生这样的事情(C代码):

for (int i = 0; i < 10; ++i) {
    printf("%d ", i);
    i = 11;
}
Run Code Online (Sandbox Code Playgroud)

这不是Python中for循环的工作方式。与此类似:

int range[10] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
for (int count = 0; count < 10; ++count) {
    int i = range[count];
    printf("%d ", i);
    i = 11;
}
Run Code Online (Sandbox Code Playgroud)