Can for循环可以创建新变量吗?
问题描述:
我在网上遇到了这个问题,并在可视化工具上使用它,看看它是如何工作的。在我看来,使用for循环创建了一个名为guess的新变量。Can for循环可以创建新变量吗?
问题:for循环是否创建了一个名为“guess”的新变量?如果不是,在if/else语句中,循环外部使用的猜测值如何?
cube = 8
for guess in range(cube+1):
if guess**3 >= abs(cube):
break
if guess**3 != abs(cube):
print(cube, "is not a perfect cube")
else:
if cube < 0:
guess = -guess
print("The cube root of", str(cube), "is", str(guess))
我非常感谢这方面的一些反馈意见。谢谢!
答
的Python正式承认(为“索引变量”一个更正式严格名)定义为循环目标的名称漏入封闭函数范围。
官方字 Python的参考文档明确记载在section on for loops
的这种行为循环,使分配到目标列表中的变量(一个或多个)。 [...]循环结束时,目标列表中的名称不会被删除,但如果序列为空,它们根本不会被循环分配。
答
从doc:
当循环结束后在目标列表名字不会被删除, 但如果序列是空的,他们就不会被全部循环分配到 。
所以是的,for循环创建一个新的变量。
只有在for循环迭代为空的情况下,才会创建guess
的唯一情况是,例如,
>>> for abcde in []: pass
...
>>> abcde
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'abcde' is not defined
作为相反:
>>> for abcde in [1]: pass
...
>>> abcde
1
环路,'guess'是循环结束(或断裂)之前计算的最后一个值 – PRMoureu
https://stackoverflow.com/questions/10563613/does-python-officially-support外-reusing-a-loop-variable-after-the-loop和https://stackoverflow.com/questions/3611760/scoping-in-python-for-loops – TessellatingHeckler