Python for循环,全局vs本地

时间:2015-08-02 22:12:54

标签: loops python-3.x for-loop

初学者,尝试使用Python3了解循环。有人可以在下面的代码中解释为什么for循环外部返回值为5?如果在for循环之外调用变量,Python是否只返回最大数字?

for x in range(0,6):
    print(x) #here is the expected output of (0,1,2,3,4,5)

print(x) #this just returns 5, why?

1 个答案:

答案 0 :(得分:2)

根据language reference(强调我的):

  

for循环对目标列表中的变量进行赋值。这会覆盖以前对这些变量的所有赋值,包括在for循环套件中所做的那些:

     

[...]

     

目标列表中的名称在循环结束时不会删除,但如果序列为空,则循环中根本不会分配它们。

因此,当您迭代0到6之间的数字范围时,这些值在每次迭代中都会分配给x。因此,在第一次迭代中,您获得x = 0,在第二次迭代中获得x = 1,依此类推,直到x = 5(这是范围内的最后一个数字)。

然后,当for循环结束时,如指定的那样,变量x 未被删除,因此x仍然存在且仍具有该值5它是在最后一次迭代中分配的。

最后,因为你似乎对x 最后只是 5而感到惊讶(而不是0, 1, 2, 3, 4, 5),请注意,在每次迭代中,x都有只有一个值。 for循环中的print(x)只执行了6次,x每次都有不同的值。这不会导致你说的输出;它仍然是每行一个数字。您的代码基本上与以下没有循环的代码相同:

# the for loop does this:
x = 0
print(x)
x = 1
print(x)
x = 2
print(x)
x = 3
print(x)
x = 4
print(x)
x = 5
print(x)

# and this follows the loop:
print(x)