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
如上图所示,为什么那两个循环做类似的事情,一个使用xrange而另一个使用while循环,这给了我完全不同的输出?
答案 0 :(得分:1)
s
将覆盖来自xrange(0, 100)
的值,而在第二个for循环中,您手动初始化变量s=0
然后用s += 10
递增它。所以,它完全是预期的行为。
您需要查看python中的变量范围。请查看此讨论:Short Description of the Scoping Rules?