预期不会使用 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?
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?