代码之家  ›  专栏  ›  技术社区  ›  porton

在python中为for循环变量赋值时的混淆行为

  •  -2
  • porton  · 技术社区  · 7 年前

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

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

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

    为什么python的行为如此混乱?

    2 回复  |  直到 7 年前
        1
  •  2
  •   Tom Zych    7 年前

    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)
    
        2
  •  1
  •   Code-Apprentice    7 年前

    it = iter(range(20))
    while(True):
        i = next(it)
        i += 10
        print(i)
    

    i i += 10

    i = next(it)