python中的嵌套变量

时间:2012-09-05 09:03:31

标签: python

预计Python中的嵌套变量是否重叠? 例如:

for i in range(1,10):
    x = [0xFF for i in range(6)]
    print(i)

预期结果(序列)是什么? 使用Python 2.7,我得到九点五。

4 个答案:

答案 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

的值