假设我写了一段代码:
for i in range(10):
print(i)
i=11
为什么循环现在不终止?
即使我这样做了:
n=10
for i in range(n):
print(i)
n=0
它不影响循环吗?
我只是想知道 python 是如何管理循环变量的?
最佳答案
Python for
循环基于迭代,而不是条件。它们在到达 StopIteration
时停止,而不是在某个 bool 条件的计算结果为 False
时停止。
range
创建一个在迭代期间不能更改的临时范围对象。在 range(10)
或 range(n)
或任何调用之后,此对象完全独立于用于创建它的对象。
您可能预料到会发生这样的事情(C 代码):
for (int i = 0; i < 10; ++i) {
printf("%d ", i);
i = 11;
}
这不是 for 循环在 Python 中的工作方式。它更类似于此:
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;
}
关于Python 为什么如果我更改循环内的值,循环行为不会改变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54799322/