预期不会使用 xrange 输出

using xrange output not expected

s = 0

for s in xrange(0, 100):
    print "s before", s
    if s % 10 == 0:
        s += 10
    print "s after", s

s = 0

while s < 100:
    print "s before", s
    if s % 10 == 0:
        s += 10
    s += 1
    print "s after", s

如上图所示,为什么这 2 个循环做类似的事情,一个使用 xrange 而另一个使用 while-loop 却给我完全不同的输出?

s 在第一个循环中被来自 xrange(0, 100) 的值覆盖,而在第二个循环中你是 手动 初始化变量 s=0 然后用 s += 10 增加它。所以,这正是预期的行为。

您需要查看 python 中的变量作用域。查看此讨论:Short description of the scoping rules?