首页 > 解决方案 > 在 Python 中分配给 for 循环变量时的令人困惑的行为

问题描述

我很好奇为什么下面的 Python 代码会输出数字 10..29(第 1 步)。使用 Python 2.7 和 3 测试。

for i in range(20):
    i += 10
    print(i)

所以i += 10被执行,但只执行一次,尽管它在循环中。这是一个非常令人困惑的行为。

为什么 Python 会以这种令人困惑的方式表现?

标签: pythonpython-3.xpython-2.7loopsfor-loop

解决方案


实际上,i += 10每次都会执行,但不影响i循环开始时的值。

for i in range(20):
    # generator range(20) assigns numbers from 0 to 19 to i

    i += 10
    # i is now 10 to 29; generator not affected

    print(i)

推荐阅读