2017-05-14 128 views
1

我对Python和编程很新。我现在正在学习循环,并尝试了下面的代码来看看会发生什么。我想知道的是为什么下面的代码不会崩溃或不断重复“罗伯特”。循环内的变量Del

谢谢。

name = ["Robert", "Mike", "Garry", "Alex"] 
for y in name: 
    print(y) 
    del y 

print("END") 
+0

所以你会问,为什么它的工作原理? –

+0

'for'循环遍历'name'变量中的值。第一次将变量'y'设置为“Robert”。下一次它将“y”设置为“Mike”。下一次它将“y”设置为“Garry”。等等...... – lit

回答

1

for循环的每次迭代都创建一个“新”y。通过每次删除此y,您只需删除属于该迭代的y。它在下一次迭代开始时再次“重新创建”。

del不会改变这段代码的结果。

+0

Python没有块范围。 – kindall

+0

如果计算机/程序在每一轮循环中重置了y变量,它会如何记住它已经通过之前的项目? python中是否有一些隐藏的变量正在跟踪或什么? – Gnomon

+0

是的。它要么使用内部索引,要么使用迭代器协议。在这种情况下,它是一个列表,所以它使用了一个索引。 – kindall

0

该代码的工作原理是因为在删除名称y后,在循环的下一次迭代中再次创建它。

如果您尝试循环后打印y,你会看到,它不会与del语句工作。