【发布时间】:2020-04-02 14:51:14
【问题描述】:
我在 Windows 10 上使用 Python 3.8.2。
我有以下代码:
x = range(5)
for i in x:
print(i)
del x
预期输出:
0
Traceback (most recent call last):
File "C:\Users\Students\test.py", line 3, in <module>
for i in x:
NameError: name 'x' is not defined
实际输出:
0
1
Traceback (most recent call last):
File "C:\Users\Students\test.py", line 5, in <module>
del x
NameError: name 'x' is not defined
在第一次迭代中,我希望 del x 会删除 x,以便在第二次迭代中它会给我在线错误 for i in x:。
然而,它不断迭代,打印出1,然后在线上给我错误del x。
似乎它与任何可迭代对象的工作方式相同。我用字典、集合、元组和列表进行了测试。
我在这里遗漏了什么吗?
谁能解释一下是怎么回事?
【问题讨论】:
-
因为循环已经拥有自己的引用,它不会每次都“返回”到
x。
标签: python python-3.x loops reference del