使用xrange输出不是预期的

时间:2017-08-09 08:32:36

标签: python python-2.7 xrange

s = 0

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

result of loop1

s = 0

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

result of loop2

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

1 个答案:

答案 0 :(得分:1)

第一个循环中的

s将覆盖来自xrange(0, 100)的值,而在第二个for循环中,您手动初始化变量s=0然后用s += 10递增它。所以,它完全是预期的行为。

您需要查看python中的变量范围。请查看此讨论:Short Description of the Scoping Rules?