Skip to main content
 首页 » 编程设计

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

2025年05月04日13qq78292959

假设我写了一段代码:

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; 
}