预计Python中的嵌套变量是否重叠? 例如:
for i in range(1,10):
x = [0xFF for i in range(6)]
print(i)
预期结果(序列)是什么? 使用Python 2.7,我得到九点五。
答案 0 :(得分:4)
您看到的是使用列表推导的副作用。 列表推导中的迭代器变量与for循环中的相同。这意味着列表推导的迭代器变量不本地表达式本身。
示例:
>>> [x for x in range(10)]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> print x
9
因此,两个迭代器变量名都应该是不同的。
答案 1 :(得分:3)
Python没有块范围。因此,您在块内更改的变量将在该块之外可见。只有类,函数和模块才能创建范围。
答案 2 :(得分:1)
i
将指向范围(6)中的最后一个元素,即5
当列表理解完成时,i
的值为5,这是您在打印时获得的值
你的外部循环运行范围(1,10),即9次
In [47]: len(range(1,10))
Out[47]: 9
答案 3 :(得分:0)
当您声明任何变量时,它将存储该值。在python中,当你初始化任何变量并存储一些值时,它将一直可用,直到变量不会被破坏。因此,当你在循环中编写x = 10
时,你也可以获得x
的循环。如果要删除该变量,请键入del x
,然后您将无法获得x